我遇到一个问题,每次do{...} while(...)
循环第二次运行时,for(...)
循环的第一次迭代不会执行以下语句
array[o] = scan1.nextLine();
。
到目前为止,这是我尝试过的:
import java.util.Scanner;
public class test
{
public static void main(String args[]) throws Exception
{
int columns=2;
String array[]=new String[10];
char ins_check='y';
Scanner scan1=new Scanner(System.in);
do {
System.out.println("Enter the value");
for (int o = 1; o <= columns; o++) {
System.out.println("Enter the value");
array[o] = scan1.nextLine();
}
System.out.println("record inserted");
System.out.println("Do you want to insert again?(y/n)");
ins_check= (char) System.in.read();
}while(ins_check != 'n');
}
}
答案 0 :(得分:2)
虽然有几位评论者告诉您该做什么和不该做什么,但他们没有回答您有关这种情况发生的原因的问题。
第一次
for
循环不执行以下语句:array[o] = scan1.nextLine();
您误会了-语句执行得很好,只是读取了空行。这是因为在提示"Do you want to insert again?(y/n)"
之后,您输入了由两个字符y
\n
组成的行,而System.in.read()
仅读取一个字节的数据({{1} }),在输入流中保留换行符y
。后续\n
获取此scan1.nextLine()
并返回空行。
答案 1 :(得分:1)
这里仍然是比我更快发布答案的人。看一看Amali的回复,多数民众赞成在正确的答案:)这应该很好:
import java.util.Scanner;
public class test
{
public static void main(String args[]) throws Exception
{
Scanner scan1=new Scanner(System.in);
String array[]=new String[10];
String ins_check="y";
int columns=9;
do {
for (int o = 0; o <= columns; o++) {
System.out.printf("Enter the value for array[%s]",o);
array[o] = scan1.nextLine();
}
System.out.println("record inserted");
System.out.println("Do you want to insert again?(y/n)");
ins_check= scan1.nextLine();
}while(ins_check.equals("y"));
System.out.println("end");
}
}