基本Java编程导致多个错误的简单问题

时间:2015-10-24 22:17:35

标签: java

import java.io.PrintStream;
import java.util.Scanner;

public class DateDifference
{
  public static void main(String[] args)
  {
    Scanner keyboard = new Scanner(System.in);

    int firstMonthNumber = 0;int secondMonthNumber = 0;

    System.out.println("For the first date,");
    System.out.print("Enter month: ");
    String firstMonth = keyboard.next();
    System.out.print("Enter year: ");
    int firstYear = keyboard.nextInt();

    System.out.println();
    System.out.println("For the second date,");
    System.out.print("Enter month: ");
    String secondMonth = keyboard.next();
    System.out.print("Enter year: ");
    int secondYear = keyboard.nextInt();
    if (firstMonth.equalsIgnoreCase("January")) {
      firstMonthNumber = 1;
    } else if (firstMonth.equalsIgnoreCase("February")) {
      firstMonthNumber = 2;
    } else if (firstMonth.equalsIgnoreCase("March")) {
      firstMonthNumber = 3;
    } else if (firstMonth.equalsIgnoreCase("April")) {
      firstMonthNumber = 4;
    } else if (firstMonth.equalsIgnoreCase("May")) {
      firstMonthNumber = 5;
    } else if (firstMonth.equalsIgnoreCase("June")) {
      firstMonthNumber = 6;
    } else if (firstMonth.equalsIgnoreCase("July")) {
      firstMonthNumber = 7;
    } else if (firstMonth.equalsIgnoreCase("August")) {
      firstMonthNumber = 8;
    } else if (firstMonth.equalsIgnoreCase("September")) {
      firstMonthNumber = 9;
    } else if (firstMonth.equalsIgnoreCase("October")) {
      firstMonthNumber = 10;
    } else if (firstMonth.equalsIgnoreCase("November")) {
      firstMonthNumber = 11;
    } else {
      firstMonthNumber = 12;
    }
    if (secondMonth.equalsIgnoreCase("January")) {
      secondMonthNumber = 1;
    } else if (secondMonth.equalsIgnoreCase("February")) {
      secondMonthNumber = 2;
    } else if (secondMonth.equalsIgnoreCase("March")) {
      secondMonthNumber = 3;
    } else if (secondMonth.equalsIgnoreCase("April")) {
      secondMonthNumber = 4;
    } else if (secondMonth.equalsIgnoreCase("May")) {
      secondMonthNumber = 5;
    } else if (secondMonth.equalsIgnoreCase("June")) {
      secondMonthNumber = 6;
    } else if (secondMonth.equalsIgnoreCase("July")) {
      secondMonthNumber = 7;
    } else if (secondMonth.equalsIgnoreCase("August")) {
      secondMonthNumber = 8;
    } else if (secondMonth.equalsIgnoreCase("September")) {
      secondMonthNumber = 9;
    } else if (secondMonth.equalsIgnoreCase("October")) {
      secondMonthNumber = 10;
    } else if (secondMonth.equalsIgnoreCase("November")) {
      secondMonthNumber = 11;
    } else {
      secondMonthNumber = 12;
    }
    int monthDifference;
    int yearDifference;
    int monthDifference;
    if (firstYear > secondYear)
    {
      int yearDifference = firstYear - secondYear;
      monthDifference = firstMonthNumber - secondMonthNumber;
    }
    else
    {
      int monthDifference;
      if (firstYear < secondYear)
      {
        int yearDifference = secondYear - firstYear;
        monthDifference = secondMonthNumber - firstMonthNumber;
      }
      else
      {
        yearDifference = 0;
        monthDifference = Math.abs(secondMonthNumber - firstMonthNumber);
      }
    }
    if (monthDifference < 0)
    {
      yearDifference--;
      monthDifference += 12;
    }
    System.out.println();
    System.out.println("These dates are " + yearDifference + " years and " + monthDifference + " months apart.");
  }
}

Errors:DateDifferencesFinderProject.java:107: error: variable MonthDifference is already defined in method main(String[])
    int MonthDifference;
        ^
DateDifferencesFinderProject.java:110: error: variable YearDifference is already defined in method main(String[])
          int YearDifference = firstYear - secondYear;
              ^
DateDifferencesFinderProject.java:115: error: variable MonthDifference is already defined in method main(String[])
      int MonthDifference;
          ^
DateDifferencesFinderProject.java:118: error: variable YearDifference is already defined in method main(String[])
            int YearDifference = secondYear - firstYear;
                ^
4 errors

所以我认为我完成了计算机编程项目介绍背后的代码,但后来我遇到了这些简单的错误。我很难理解编译器给我的错误。为什么先前定义的变量会导致编译器出现问题?什么问题导致编译器出现问题?我该怎么做才能解决错误?当我谈到这种事情时,我知道我是一个完整的菜鸟,但我只花了最后一小时看着这些错误撕裂了我的头发。如果有人能指出我正确的方向,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当你说int foo时,它会在当前范围内声明一个变量。如果在同一范围内有另一个int foo,则它是一个重复的变量声明。

删除错误中指示的行上的所有其他声明。他们不需要。

相关问题