Java-Java中Scanner输入的疑问
想输入一串数字,并且以逗号隔开,要求最后一个数字后面什么也不加
example: 235,345,3456,3
最后就想输出这些数字。
发现用了Scanner类之后,按照example输入的格式就阻塞在输入那边了,而且要输入 235,345,3456,3,, (3后面跟着两个逗号),才会有输出语句,请问大神怎么破才能严格按照example输入不阻塞?
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
int i=0;
int[] temp = new int[4];//输入4个数字
Scanner sc = new Scanner(System.in);
sc.useDelimiter(",");//逗号隔开
while(sc.hasNextInt()){
temp[i++]=sc.nextInt();
}
for(i=0;i<temp.length;i++){
System.out.println(temp[i]);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的问题在这一句:
while(sc.hasNextInt())
程序必须看到没有int才会停止。你的倒数第二个逗号保证了最后一个int输入,你的最后一个逗号保证了输入一个不是int的信息……
解决方案:
还真没有……后面的那两个逗号你貌似免除不了啊……
算是自问自答吧,找到方法了,用的String的split()就能解决了
import java.io.*;
public class Main{
public static void main(String[] args) {
int i=0;
String s=null;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
s = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] temp = s.split(",");
for(i=0;i<temp.length;i++){
System.out.println(temp[i]);
}
}
}