Java从键盘获取输入(不知道输入个数) 您所在的位置:网站首页 java中如何输入字符 Java从键盘获取输入(不知道输入个数)

Java从键盘获取输入(不知道输入个数)

2023-12-17 02:10| 来源: 网络整理| 查看: 265

问题

最近在使用Scanner类中的hasNest()方法进行键盘输入时,发现while循环老是停在那儿,等待输入,而不执行后面的语句。 比如这样一段代码:

import java.util.ArrayList; import java.util.Scanner; public class blogTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); ArrayList list = new ArrayList(); while(in.hasNext()) { int a = in.nextInt(); list.add(a); } System.out.println(list); } }

键盘输入,死循环,无法结束:

图1

现在解释下原因: hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。 此情况可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。

解决方式:需要指定结束符号 1 例:以输入"0",结束输出

//例:以输入"0",结束输出 Scanner sc = new Scanner(System.in); while (!sc.hasNext("0")) { System.out.println(sc.next()); }

2 以输入"quit",结束输出

import java.util.Scanner; public class day01 { public static void main(String[] args){ System.out.print("请输入值:"); Scanner s = new Scanner(System.in); while(s.hasNext()){ String a = s.next(); //将s.next()赋值给变量a if("quit".equals(a)){ break; }else{ System.out.println(a); } } } }

在这里插入图片描述

3 以输入"按回车键输入空行",结束输出

import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class InputTest { public static void main(String[] args) { // TODO Auto-generated method stub // 输入分割为一个一个输入(不知道个数) // 按回车键输入空行结束 Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do{ String str = scanner.nextLine(); if(str.equals("")){ break; } list.add(Integer.valueOf(str)); }while(true); //System.out.println(list); System.out.println(Arrays.toString(list.toArray())); } }

在这里插入图片描述

4 输入风格为一行(不知道个数),以空格分隔

// 输入风格为一行(不知道个数) public static void main(String[] args){ Scanner sc = new Scanner(System.in); String inputString = sc.nextLine(); String stringArray[] = inputString.split(" "); int num[] = new int[stringArray.length]; for (int i = 0; i < stringArray.length; i++) { num[i] = Integer.parseInt(stringArray[i]); } for (int i = 0; i < stringArray.length; i++) { System.out.println(num[i]); } }

在这里插入图片描述

整理这篇博客是因为:做过好几道笔试题都卡在处理输入上,特别是一个一个输入,且不知到个数的情况,题目给的测试用例一般不会指定结束符号,所以,目前还在找一个一个从键盘输入的情况下,不用指定结束符号的解决办法。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有