scanner.next()在java中如何工作
我正在尝试从STD输入并在控制台上打印它。下面是节目。我试着只打印三个数字。但我的输入超过了3个数字我做错了什么scanner.next()在java中如何工作,java,Java,我正在尝试从STD输入并在控制台上打印它。下面是节目。我试着只打印三个数字。但我的输入超过了3个数字我做错了什么 public static void main(String[] args) { String reg= "^-?(\\d+)$"; int b[]= new int[3]; Scanner sc=new Scanner(System.in); for(int i=0;i<3;i++){ if
public static void main(String[] args) {
String reg= "^-?(\\d+)$";
int b[]= new int[3];
Scanner sc=new Scanner(System.in);
for(int i=0;i<3;i++){
if(sc.next().matches(reg)){
b[i]= Integer.parseInt(sc.next());
}
}
System.out.println(Arrays.toString(b));
for(int c=0;c<b.length;c++){
System.out.println(b[c]);
}
}
output:
------------------
20
30
40
50
60
70
[30, 50, 70]
30
50
70
publicstaticvoidmain(字符串[]args){
字符串reg=“^-?(\\d+)$”;
int b[]=新int[3];
扫描仪sc=新的扫描仪(System.in);
对于(int i=0;i,每次调用next()
,都将移动到下一个输入。如果要检查并保存,需要将其保存在变量中:
for(int i=0;i<3;i++){
String input = sc.next();
if(input.matches(reg)){
b[i]= Integer.parseInt(input);
}
}
for(int i=0;i查看我的快速修复:
public static void main(String[] args) {
String reg= "^-?(\\d+)$";
int b[]= new int[3];
Scanner sc=new Scanner(System.in);
for(int i=0;i<3;i++){
String tmp = sc.next();
if(tmp.matches(reg)){
b[i]= Integer.parseInt(tmp);
}else{
i--;
}
}
System.out.println(Arrays.toString(b));
for(int c=0;c<b.length;c++){
System.out.println(b[c]);
}
}
publicstaticvoidmain(字符串[]args){
字符串reg=“^-?(\\d+)$”;
int b[]=新int[3];
扫描仪sc=新的扫描仪(System.in);
对于(int i=0;i将您的输入分配给一个临时变量。然后重新编译程序。
希望这有帮助!if(sc.next().matches(reg)){
if(sc.next().matches)(reg))应该做什么?你在循环中读取6个数字,每次2个。if检查中读取3个,然后在parseInt中读取3个。我的意图是。if用户键入的不是数字。跳过它们。只读取数字这就是我添加sc.next().matches(reg)的原因@azurefrog piyush:感谢您的回复阅读扫描仪类文档