局部变量是冗余的JetBrains IDE(例如IntelliJ IDEA)

问题描述 投票:2回答:5
public static double getAmount(){
    Scanner reader = new Scanner(System.in);
    System.out.println("random text");
    double amount;
    return (amount = reader.nextDouble());
}

IntelliJ在上面的代码中给了我这个警告:

局部变量'数量'是多余的

为什么?

java intellij-idea jetbrains-ide
5个回答
11
投票

在方法主体内(在{和}之间)声明的任何变量将在该方法末尾删除(垃圾回收)。 (除非您将其分配给未在方法主体中创建的内容)

运行时,您正在创建变量“ 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只是告诉您,最后您的变量没有被使用(没有使用),因此可以安全地删除变量声明。

但是,Intellij还应该为您提供一个解决方案,就像您将鼠标悬停在代码行开头的小灯泡上一样。一个例子:enter image description here


1
投票

告诉您,您可以简单地返回reader.nextDouble(),并且您不需要变量amount


1
投票

因为您对此不做任何事情。该代码可以简化为:

public static double getAmount(){
    Scanner reader = new Scanner(System.in);
    System.out.println("random text");
    return reader.nextDouble();
}

0
投票

您可以做

 return reader.nextDouble();

该变量声明和赋值正在占用内存。


0
投票

尝试为多余的局部变量关闭检查模式。或者,您可以只做:

return reader.nextDouble();
© www.soinside.com 2019 - 2024. All rights reserved.