Scanner和nextInt丢弃整数
我正在使用Scanner在java中获取用户输入。 当我使用nextInt()并且用户输入“2 5”时,则分配值“2”并丢弃5。 如果我想显示这样的输入是错误怎么办? 我想到的一个解决方案是,我可以使用nextString()而不是nextInt()然后解决问题。 但是,有人可以提出更好的解决方案吗?
我意识到它并没有抛弃空格后的整数,而是将它用于下一个输入。
import java.util.Scanner; class Test{ static Scanner in=new Scanner(System.in); static void trial(){ int k=in.nextInt(); System.out.println(k); System.out.println(k); } public static void main(String[] args){ int k=in.nextInt(); System.out.println(k); System.out.println(k); trial(); } }
1.首先使用nextLine()
读取整行。
2.使用Integer.parseInt()
方法validation整数输入 。
例如:
Scanner scan = new Scanner(System.in); String s = scan.nextLine(); try{ Integer.parseInt(s); } catch(NumberFormatException ex){ System.out.println("Its not a valid Integer"); }
就个人而言,我建议一次读取该行,并使用String.split()来解析单个“单词”:
http://pages.cs.wisc.edu/~hasti/cs302/examples/Parsing/parseString.html
我们希望将一个短语分成单词,其中空格用于分隔单词。 例如
the music made it hard to concentrate
在这种情况下,我们只有一个分隔符(空格)和连续的分隔符(即连续的几个空格)应该被视为一个分隔符。 要用Java解析这个字符串,我们这样做
String phrase = "the music made it hard to concentrate"; String delims = "[ ]+"; String[] tokens = phrase.split(delims);
使用BufferedReader
readLine()
。 您将获得一个String
其中包含用户输入的所有内容。 从那里,您可以使用输入执行所需操作,并检查它是否符合您的预期格式。
- 更新JHipster生成器后如何更新JHipster项目?
- 如何将新数据附加到属性文件中的现有数据?
- 尝试进行客户端服务器ssl身份validation时,Tomcat 7获取SSLv2Hello被禁用错误
- 使用log4j进行条件记录
- 字符串变量中的\ t和\ n不会显示在JOptionPane.showMessageDialog中
- RSA BadPaddingException:数据必须以零开头
- JUnit – 如何测试具有不同值的方法?
- 如何使用基于均方误差的基于像素的图像比较度量来比较java中的图像集?
- 获取java.lang.ClassNotFoundException:JUnit中的javax.servlet.ServletContext