变量未初始化

时间:2014-12-07 11:42:30

标签: java variables initialization

我正在尝试编写一种方法,用于将用户输入的字符串的元音加倍。我一直在警告变量输出没有初始化。 该怎么办?

这是我的代码:

public static void main(String[] args) 
{
    String input;
    String output;

    Scanner scan = new Scanner (System.in);
    System.out.println ("Enter string:");
    input =scan.nextLine();
    for (int i=0 ; i< input.length(); i++) {
        if((input.charAt(i)+"").toUpperCase().matches("A|E|I|O|U")) {
            output += input.charAt(i);
        }
        output += input.charAt(i);
        System.out.println ("New string:" +output);

    }
  }
}

4 个答案:

答案 0 :(得分:5)

您必须初始化output,因为本地变量没有默认值:

String output = "";

否则,在第一次调用output += input.charAt(i);(相当于output = output + input.charAt(i);)时,output未初始化,因此该行有编译错误。

使用input您不会遇到同样的问题,因为您在首次尝试访问它之前为其分配了一个值。

答案 1 :(得分:1)

您必须在Java中初始化局部变量以避免编译错误,因为它们默认情况下未设置。所以只需在访问它们之前进行初始化:

String input = "";
String output = "";

答案 2 :(得分:0)

只需初始化字符串:

public static void main(String[] args) {
    String input = "";
    String output = "";

    Scanner scan = new Scanner(System.in);
    System.out.println("Enter string:");
    input = scan.nextLine();
    for (int i = 0; i < input.length(); i++) {
        if ((input.charAt(i) + "").toUpperCase().matches("A|E|I|O|U")) {
            output += input.charAt(i);
        }
        output += input.charAt(i);
        System.out.println("New string:" + output);

    }
}

答案 3 :(得分:0)

这是你声明字符串的方式:

for(var i = start; i < end; i += step){
  document.getElementById("myP").innerHTML = i;
}