字符串数组连接问题
Issues with String Array Concatenation
我正在尝试连接数组中的所有字符串。例如,我希望 ["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;
中的变量
谢谢。
不,您声明了变量。 Initializing 意味着你已经给它一个初始值。您可以通过将行替换为:
String resultat = "";
或者您可以分两步完成:
String resultat; //declaration
resultat = ""; //initializiation
据我所知,Java 仅自动初始化字段。对于局部变量,它的自动化程度较低。可能是因为这被认为容易出错。
所有局部变量在使用前都需要初始化。这样做将解决编译错误。在您的程序中,您已声明变量 resultat
但尚未对其进行初始化。
Java8 语言规范中的第 4.12.5 节指出:
A local variable (§14.4, §14.14) must be explicitly given a value before it is used, by either initialization (§14.4) or assignment (§15.26), in a way that can be verified using the rules for definite assignment (§16 (Definite Assignment)).
String resultat;
resultat=resultat+something;
^what is value in here?
或者
String resultat; //declared
resultat="something";//initialized
您应该初始化字符串结果。最终代码如下所示:
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);
}
}
这应该可以解决您的问题。
我正在尝试连接数组中的所有字符串。例如,我希望 ["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;
谢谢。
不,您声明了变量。 Initializing 意味着你已经给它一个初始值。您可以通过将行替换为:
String resultat = "";
或者您可以分两步完成:
String resultat; //declaration
resultat = ""; //initializiation
据我所知,Java 仅自动初始化字段。对于局部变量,它的自动化程度较低。可能是因为这被认为容易出错。
所有局部变量在使用前都需要初始化。这样做将解决编译错误。在您的程序中,您已声明变量 resultat
但尚未对其进行初始化。
Java8 语言规范中的第 4.12.5 节指出:
A local variable (§14.4, §14.14) must be explicitly given a value before it is used, by either initialization (§14.4) or assignment (§15.26), in a way that can be verified using the rules for definite assignment (§16 (Definite Assignment)).
String resultat;
resultat=resultat+something;
^what is value in here?
或者
String resultat; //declared
resultat="something";//initialized
您应该初始化字符串结果。最终代码如下所示:
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);
}
}
这应该可以解决您的问题。