不会输入字符串值

String value won't inputted

我还是编程初学者。

我的字符串值不会输入数组

如果我输入"y"后输入所有的a b c,那么输入a b c数组就得到最后一个

String a, b, c, d;
    int x = 0;
    Scanner in = new Scanner(System.in);

    do {

        x++;
        int e = x - 1;
        array = new String[x][3];

        System.out.println("input a : ");
        a = in.nextLine();
        array[e][0] = a;
        System.out.println("input b : ");
        b = in.nextLine();
        array[e][1] = b;
        System.out.println("input c : ");
        c = in.nextLine();
        array[e][2] = c;
        System.out.println("Again ? (y/n)");
        d = in.nextLine();

    } while (d.equals("y"));

    for (int i = 0; i < array.length; i++) {
        System.out.println("Output "+(i+1)+" : ");
        System.out.println("a :" + array[i][0]);
        System.out.println("b :" + array[i][1]);
        System.out.println("c :" + array[i][2]);
        System.out.println("");
    }

}

do-while 循环中,您在每次迭代中将新的 String 数组分配给 array。因此它不会存储以前输入的值。所以最后当你打印它时,你只会得到最后输入的条目,之前输入的条目将是 null 因为新定义的数组最初的所有元素都是 null 。 所以你需要在 do-while 循环之外定义数组。

array = new String[4][3]; //Define array here of any appropriate size

do {
    x++;
    int e = x - 1;

    System.out.println("input a : ");
    a = in.nextLine();
    array[e][0] = a;
    System.out.println("input b : ");
    b = in.nextLine();
    array[e][1] = b;
    System.out.println("input c : ");
    c = in.nextLine();
    array[e][2] = c;
    System.out.println("Again ? (y/n)");
    d = in.nextLine();

} while (d.equals("y"));

如果您不知道 Array 的总大小,您可以使用像 ArrayList<String> 这样的动态结构。您可以手动使用 ArrayList of ArrayList 或只是不同的 ArrayList 但如果您的总输入可能更多,那么最好使用 ArrayList of ArrayList.

不同的数组列表:

如果您知道所有可能的输入,此方法将对您有所帮助。所以这里我们知道我们总共有 3 个可能的输入 abc 所以为每个 abc.

ArrayList<String> listA=new ArrayList<String>();
ArrayList<String> listB=new ArrayList<String>();
ArrayList<String> listC=new ArrayList<String>();

do {
    System.out.println("input a : ");
    a = in.nextLine();
    System.out.println("input b : ");
    b = in.nextLine();
    System.out.println("input c : ");
    c = in.nextLine();

    listA.add(a);
    listB.add(b);
    listC.add(c);

    System.out.println("Again ? (y/n)");
    d = in.nextLine();

} while (d.equals("y"));

for (int i = 0; i < listA.length; i++) 
{
    System.out.println("Output "+(i+1)+" : ");
    System.out.println("a :" + listA.get(i));
    System.out.println("b :" + listB.get(i));
    System.out.println("c :" + listC.get(i));
    System.out.println("");
}