字符串值不会输入

时间:2017-04-27 16:43:30

标签: java arrays do-while netbeans-8

我还是编程的初学者。

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

如果我输入" 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("");
    }

}

enter image description here

1 个答案:

答案 0 :(得分:0)

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

不同的ArrayLists:

这种方法在这里会有所帮助如果您知道可能的总输入数。我们知道我们总共有3个输入abc因此为每个3 {定义a个数组列表{ {1}}和b

c