Java Scanner won't “finish” reading input

前端 未结 4 1624
不思量自难忘°
不思量自难忘° 2021-01-14 17:09

I\'ve been having trouble using java\'s Scanner class. I can get it to read my input just fine, but the problem is when I want to output something. Given multiple lines of i

4条回答
  •  北恋
    北恋 (楼主)
    2021-01-14 17:36

    You are reading from an Infinite stream in this case. hasNextLine() will keep returning true if there is another line in the input of this scanner. As its a System.in, it will keep reading from the Keyboard, unless you terminate it or tell the stream to stop.

    Press "ctrl+Z" in the end, you will see that it works.

    Edit : You could do something like this...

    Scanner scanner = new Scanner(System.in);   //scanner reads block of input
            int BLOCK_SIZE  =3,count=1;
            while(scanner.hasNextLine()){    
                //body of loop goes here
                String s = scanner.nextLine();
                Scanner ls = new Scanner(s);   //scanner to parse a line of input
                while(ls.hasNext()){
                //body of nested loop goes here
                ls.next();
                }
                if(count++==BLOCK_SIZE)
                {
                    break;
                }
            }
            System.out.println("Fin");
    
        }
    

提交回复
热议问题