Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用固定长度迭代Java数组以获取用户输入值,而不替换以前的值_Java_Arrays_Loops - Fatal编程技术网

使用固定长度迭代Java数组以获取用户输入值,而不替换以前的值

使用固定长度迭代Java数组以获取用户输入值,而不替换以前的值,java,arrays,loops,Java,Arrays,Loops,如何循环固定长度为2的Java数组进行迭代而不替换以前的值?下面的代码将采用迭代循环的用户输入值。但它将替换以前的值: Scanner input2 = new Scanner(System.in); char[] block = new char[2]; while (block[0] != 'C' && block[1] != 'C') { System.out.println("enter number"); block[0]=input2.next().c

如何循环固定长度为2的Java数组进行迭代而不替换以前的值?下面的代码将采用迭代循环的用户输入值。但它将替换以前的值:

Scanner input2 = new Scanner(System.in);
char[] block = new char[2];
while (block[0] != 'C' && block[1] != 'C') {
    System.out.println("enter number");
    block[0]=input2.next().charAt(0);
    System.out.println("enter number");
    block[1]=input2.next().charAt(0);
    System.out.println(block);
}
如果用户为数组输入C,C,那么数组应该停止迭代


谢谢你这是你想要的吗?循环将在每次迭代的索引
[0]
[1]
之间切换

Scanner input2 = new Scanner(System.in);
char[] block = new char[2];
int i = 0;
while (block[0] != 'C' && block[1] != 'C') {
    System.out.println("enter number");
    block[i%2]=input2.next().charAt(0);
    i++;
    System.out.println(block);
}

有两种方法可以做到这一点:

  • 使用自增大的数据结构,如
    HashMap
    。也许是最好的解决办法

  • 创建一个大的2D数组
    char[]block=new char[100][2]。这最多只能处理100个输入

  • 对于第二种方法,您需要增加数组,无论何时达到最大数量,这都是毫无意义的,因为这样您就基本上实现了数据结构下的内容


    我的建议是使用
    HashMap
    ,但我假设您还没有学习数据结构。如果这是一个作业,我唯一能建议的就是使用一个设置大小的2D数组,只允许这么多输入。

    您已经问过这个问题。如果可能的话,请编辑您的问题本身。您应该使用for循环进行迭代。@Jhanvi我想复制用户输入值,而不用新输入的值替换它们。代码太长了吗?那没有任何意义。你们到底得到了什么异常?线路太长,请切换到包裹模式查看整条线路