java - 为什么我的代码告诉我初始化一个已经初始化的变量?

标签 java variables initialization

我有以下代码:

public String palindrome(String str)
{
    String str, reverse = "";
    Scanner in = new Scanner(System.in);
    int length = str.length();
    for ( int i = length - 1; i >= 0; i-- )
        reverse = reverse + str.charAt(i);
    if (str.equals(reverse))
        System.out.println("Entered string is a palindrome.");
    else
        System.out.println("Entered string is not a palindrome.");

    return "";
}

它有一个 init() 方法,当输入字符 'p' 时调用它,检查当前字符串是否为回文。

但是,当我编译时它指出行中有错误:

String str, reverse = "";

错误指出变量可能尚未初始化。但是,当我初始化它时,会出现另一条错误消息,指出 str 已被初始化。

最佳答案

您复制了 str,一次作为参数,一次作为局部变量。除此之外……

字符串 str, reverse = "";

...确实用“”初始化reverse,但不是str:

String str, reverse = "";
System.out.println(str); // error here "The local variable str may not have been initialized"

但是……

String str = "", reverse = "";
System.out.println(str); // works fine

关于java - 为什么我的代码告诉我初始化一个已经初始化的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720186/

相关文章:

c++ - 如何画一条宽度可变的线?

C - 在循环中创建结构成员?

java - 如何在java play框架中检查数据库表是否为空

java - 访问子类的属性

java - 在生产中使用 p6spy

java - 为什么带有前导零的整数文字会被奇怪地解释?

linux - 如何将 IF ELSE 添加到 linux 变量

c++ - C++ 中的函数和变量声明

c++ - 方便的 C++ 结构初始化

c++ - 初始化成员变量后加括号?