如何将用户的输入更改为整数到另一个整数?

时间:2012-12-07 10:21:30

标签: java

我在使用Zeller的算法找到一周中的某一天时遇到了问题。

我必须将1转换为13和2转换为14.但是我收到重复局部变量的错误。本书显示了使用临时变量更改变量,但它不适用于Eclipse。它显示错误。这是一个例子:

System.out.println("Enter a month 1-12: ");
int m = input.nextInt();
// Convert January to 13 and February to 14; Zeller's requirement
if (m == 1){
int temp = 13;
int m = temp;
}
else if (m == 2){
int temp = 14;
int m = temp;
}

}

我刚刚开始介绍Java的入门书,也许这里有简单的解决方案?

6 个答案:

答案 0 :(得分:3)

这是一个简单而明智的解决方案:

System.out.println("Enter a month 1-12: ");
int m = input.nextInt();
m = m + 12;

你得到的错误也是因为两个变量(m)具有相同的名称。

在Java中的单个块中不能有两个具有相同名称的变量。

答案 1 :(得分:1)

试一试。您不需要再次声明其已声明的int m并将您的代码初始化为int m = input.nextInt();

System.out.println("Enter a month 1-12: ");
int m = input.nextInt();
// Convert January to 13 and February to 14; Zeller's requirement

if (m == 1){
int temp = 13;
m = temp;
}
 else if (m == 2){
int temp = 14;
 m = temp;

答案 2 :(得分:1)

在if else条件之外声明你的变量temp和m。 似乎变量被声明了两次。

答案 3 :(得分:1)

虽然其他答案是正确的(你必须考虑变量的使用位置,并且只在其前面的第一个创建位置int,如果你想要使用更多,请阅读'范围'变量')。

我想提供一个反对重用变量的额外提示。例如,你可以这样做:

System.out.println("Enter a month 1-12: ");
int inputMonth = input.nextInt();

// This will hold our result.
int convertedMonth; 
// Convert January to 13 and February to 14; Zeller's requirement
if (inputMonth == 1){
   convertedMonth = 13;
}
else if (inputMonth == 2){
   convertedMonth = 14;
}
else{
   convertedMonth = inputMonth;
}

这样,变量的名称总是表示存储在其中的内容。而不是m在某一点上有用户输入,后来有转换后的输入。 (而不是我示例中的最后一个,您可以立即通过设置默认值convertedMonth来开始:

int convertedMounth = inputMonth;

答案 4 :(得分:0)

在if / else语句中跳过与m对应的 int 关键字。

答案 5 :(得分:0)

您不能在代码中多次声明具有相同名称的变量。你一次又一次地声明“m”而不是在你声明和分配中赋值。将来要避免这种错误。