调试 - 读取扫描仪输入问题

时间:2013-12-21 18:03:52

标签: java input java.util.scanner

我正在使用Eclipse运行以下简单程序(测试扫描程序) 输入在运行配置中提及 - >参数部分为

23 98 

程序没有终止 - 挂起而不产生+ b

import java.io.*;
import java.util.*;

public class InputExpt
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);
      //PrintWriter out = new PrintWriter(System.out);

      int a = in.nextInt();
      int b = in.nextInt();
      in.close();
      System.out.println(a+b);
   }
}

当我不使用Scanner实用程序读取输入时,程序可以正常工作。使用下面的行显示121(a + b)

     int a = Integer.parseInt(args[0]); // in.nextInt();
     int b = Integer.parseInt(args[1]); //in.nextInt();

这是什么问题?

2 个答案:

答案 0 :(得分:2)

程序输入和程序参数之间存在差异。

当您输入运行配置参数时,Eclipse会将它们添加到java启动程序

java InputExpt 23 98

为了获得控制台输入,您将运行并输入数字(当您输入所需内容时按回车键)

> java InputExpt
> 23 98
>

程序参数作为元素绑定到args数组,而程序输入在java进程输入流中流式传输,您可以通过System.in获得。

答案 1 :(得分:1)

1)Scanner in = new Scanner(System.in);

上面的代码将从STDIN读取,并且您使用命令行参数传递数据

2)

 int a = Integer.parseInt(args[0]); // in.nextInt();
 int b = Integer.parseInt(args[1]); //in.nextInt();

上面的代码在您使用cmd-args

传递数据时有效