在Java中执行Scanner类的问题

时间:2018-09-26 07:53:10

标签: java

我遇到一个问题,每次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');
       }
    }

2 个答案:

答案 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");
       }
    }