Jcreator说变量big
可能尚未初始化if(big%2==0)
然后我将"int big"
更改为"int big=0"
,它有效。我在big
之前的前两个if语句中初始化了if(big%2==0)
,为什么会这样?
import java.util.Scanner;
public class Large
{
public static void main(String[]args)
{
Scanner in=new Scanner(System.in);
int number1,number2;
int big;
System.out.println("Enter 2 values");
number1=in.nextInt();
number2=in.nextInt();
if(number1>number2)
big=number1;
if(number2>=number1)
big=number2;
if(big%2==0)
System.out.println("even");
if(big%2==1)
System.out.println("odd");
}
}
答案 0 :(得分:3)
它无法在编译中执行逻辑,这对您来说是显而易见的。使用else
if(number1>number2)
big=number1;
else /* if(number2>=number1) <-- because, this is a new expression */
big=number2;
或ternary
,
big = (number1>number2) ? number1 : number2;
big = java.lang.Math.max(number1, number2);
答案 1 :(得分:0)
您的变量已声明,但尚未初始化。
变量的初始化表明其值是什么。在设置其值之前,不应使用变量。
答案 2 :(得分:0)
本地变量在使用之前需要显式初始化或赋值。
编译器不知道你的逻辑意味着必须分配变量,它只知道有几个if语句,其中变量可以被初始化,但是它有可能是如果条件不成,则不会。
因为第二个if条件与第一条条件相反,所以将其更改为else:
if(number1>number2)
big=number1;
else
big=number2;
编译器现在很高兴无论条件如何,都必须为变量赋值。
考虑使用三元作为一行声明和赋值:
int big = number1 > number2 ? number1 : number2;
答案 3 :(得分:0)
此代码可以使用。
Scanner in=new Scanner(System.in);
int number1,number2;
int big;
System.out.println("Enter 2 values");
number1=in.nextInt();
number2=in.nextInt();
if(number1>number2) {
big=number1;
} else if(number2>number1) {
big=number2;
} else {
big = number1;
}
if(big%2==0)
System.out.println("even");
if(big%2==1)
System.out.println("odd");