字符串数组连接问题

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);
    }
}

这应该可以解决您的问题。