Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scanner.next()在java中如何工作_Java - Fatal编程技术网

scanner.next()在java中如何工作

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

我正在尝试从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(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:感谢您的回复阅读扫描仪类文档