我正在尝试连接数组中的所有字符串。我希望例如["a","b","c"]
成为"abc"
。这是我的代码:
import java.util.Scanner;
import java.util.ArrayList;
public class Laggaihop
{
private static Scanner scanner = new Scanner( System.in );
public static void main(String[] args)
{
System.out.print("Ange antal ord: ");
String input = scanner.nextLine();
int antal = Integer.parseInt(input);
String[] ordlista;
ordlista = new String[antal];
for(int i = 0; i < antal; i++){
System.out.print("Ange ord: ");
String nyttelement = scanner.nextLine();
ordlista[i] = nyttelement;
}
String resultat;
for(int i = 0; i < antal; i++){
resultat = resultat+ordlista[i];
}
}
我收到以下错误:
Laggaihop.java:21: error: variable resultat might not have been initialized
resultat = resultat+ordlista[i];
这是为什么?我已初始化行String resultat;
感谢。
答案 0 :(得分:3)
没有声明变量。 初始化表示您已为其指定初始值。您可以通过将行替换为:
来完成此操作String resultat = "";
或者你可以分两步完成:
String resultat; //declaration
resultat = ""; //initializiation
据我所知,仅Java 自动初始化字段。对于局部变量,它的自动化程度较低。可能是因为这被认为容易出错。
答案 1 :(得分:1)
所有局部变量在使用前都需要进行初始化。这样做将解决编译错误。在您的程序中,您已声明变量resultat
但尚未初始化它。
Java 8语言规范中的第4.12.5节说明:
局部变量(§14.4,§14.14)必须在使用前通过初始化(§14.4)或赋值(§15.26)显式赋予值,其方式可以使用明确规则进行验证赋值(§16(定义赋值))。
答案 2 :(得分:1)
String resultat;
resultat=resultat+something;
^what is value in here?
或者
String resultat; //declared
resultat="something";//initialized
答案 3 :(得分:0)
您应该初始化String resultat。最终的代码如下:
import java.util.Scanner;
import java.util.ArrayList;
public class Laggaihop
{
private static Scanner scanner = new Scanner( System.in );
public static void main(String[] args)
{
System.out.print("Ange antal ord: ");
String input = scanner.nextLine();
int antal = Integer.parseInt(input);
String[] ordlista;
ordlista = new String[antal];
for(int i = 0; i < antal; i++){
System.out.print("Ange ord: ");
String nyttelement = scanner.nextLine();
ordlista[i] = nyttelement;
}
String resultat="";
for(int i = 0; i < antal; i++){
resultat = resultat+ordlista[i];
}
System.out.println(resultat);
}
}
这可以解决您的问题。