public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
double amount;
return (amount = reader.nextDouble());
}
IntelliJ在上面的代码中给出了这个警告:
本地变量'amount'是多余的
为什么?
答案 0 :(得分:10)
在方法体末端(在{和}之间)声明的任何变量都将在该方法结束时被删除(垃圾收集)。 (除非您将其设置为未在方法体中创建的内容)
您在运行时创建变量“amount”:
double amount;
此时您已创建变量,但从未为其分配过值。 第一次使用此变量位于return语句中:
return (amount = reader.nextDouble());
您应该做的是将变量分配到与声明相同的行:
public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
double amount = reader.nextDouble();
return amount;
}
或者,更好的是,根本不要使用变量(虽然它可以提高代码的可读性,在这种情况下可以保留一个有效点):
public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
return reader.nextDouble();
}
为什么Intellij警告我?
Intellij只是告诉你最后你的变量没有被使用(它不是)所以删除变量声明是安全的。
答案 1 :(得分:1)
它告诉您,您只需返回reader.nextDouble()
,并且您不需要为此目的使用变量amount
。
答案 2 :(得分:1)
因为你没有做任何事情。代码可以简化为:
public static double getAmount(){
Scanner reader = new Scanner(System.in);
System.out.println("random text");
return reader.nextDouble();
}
答案 3 :(得分:0)
你可以做到
return reader.nextDouble();
变量声明和赋值占用了内存。
答案 4 :(得分:0)
尝试关闭冗余局部变量的检测模式。或者你可以简单地做:
return reader.nextDouble();