【问题标题】:Getting input from user in Console without using Scanner在不使用扫描仪的情况下在控制台中获取用户的输入
【发布时间】:2013-04-13 21:18:33
【问题描述】:

我想知道使用其他类(如BufferedReader 等)而不是使用 Scanner 类从用户那里获取输入的其他方法。那么,有没有其他方法可以从用户那里获取输入?如果是这样,它比Scanner class 高效吗?

【问题讨论】:

  • System.in 是一个 InputStream。您可以直接读取它,也可以直接或间接使用任何包装它的类。

标签: java java.util.scanner


【解决方案1】:

使用这个:

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

System.in创建一个阅读器,你可以使用stdin.readLine()或其他东西来获得你想要的东西。

使用BufferedReader 比使用Scanner 高效得多。

【讨论】:

    【解决方案2】:

    如果您使用的是 Java SE6 或更高版本,则可以使用Console clas

       Console console = System.console();
       if (console==null){
          System.out.print("console not available ");
       }else {
          String line = console.readLine("Enter name :");
          System.out.print("your name :"+line);
       }
    

    【讨论】:

    • @Gowtham 更新了答案。但是您是否在 Eclipse 中运行它,那么它可能不会提供系统控制台。它是bug in eclipse 虽然有解决方法这个here
    • 如果可能,请为 eclipse 添加该解决方法以及在命令行中运行此解决方案的方法。
    【解决方案3】:

    你可以直接使用System.in,像这样:

    BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
    String line;
    while ((line = r.readLine()) != null) {
        System.out.println(line);
    }
    

    虽然这可能比使用 Scanner 快一点,但这不是一个苹果对苹果的比较:Scanner 提供了更多的方法来标记输入,而 BufferedReader 可以将您的输入拆分为行,而无需标记它。

    【讨论】:

    • 它比 Scanner Class 高效吗?
    【解决方案4】:

    您可以通过以下步骤轻松完成:

    1. 使用BufferedReader 类并用InputStreamReader 类包装它。

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
      //string str = br.readLine(); //for string input
      int i = Integer.parseInt(br.readLine()); // for Integer Input
      
    2. 现在由于readLine 方法抛出了IOException,你需要抓住它。整个代码将如下所示:

      try {
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
          //string str = br.readLine();     //for string input
          int i = Integer.parseInt(br.readLine()); // for Integer Input
      } catch(IOException ioe) {
          ioe.PrintStackTrace();
      }
      

    【讨论】:

      【解决方案5】:

      这里例如...

      InputStreamReader inStream = new InputStreamReader(System.in);
      BufferedReader stdin = new BufferedReader(inStream);
      
      int num , num2;
      String str[]=new String[2];
      
      System.out.print("Please Enter Your First Number:");
      str[0] = stdin.readLine();
      System.out.print("Please Enter Your Second Number:");
      str[1] = stdin.readLine();
      
      num = Integer.parseInt(str[0]);
      num2 = Integer.parseInt(str[1]);
      

      【讨论】:

        【解决方案6】:

        用户可以在程序执行时输入数据,而无需使用扫描程序类,这可以通过使用以下程序来完成。

         class Demo
          { 
           public static void main(String ar[])
            {
             int ab = Integer.parseInt(ar[0]);
             int ba = Integer.parseInt(ar[1]);
             int res = ab+ba;
             System.out.print(res);
            }
          }
        

        这是一个基本程序,用户可以在执行时输入数据并获得所需的结果。您可以在 CMD 中加、减、乘、除和连接字符串,用户可以在编译 java 程序后,即在调用类文件时输入数据。只需调用类文件,然后在空格后输入数据即可。

        C:\Users\Lenovo\Desktop>java Demo 5 2

        这里 ab= 5 和 ba= 2。用户可以根据需要使用任何数字或字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-06-05
          • 1970-01-01
          • 2017-02-19
          • 1970-01-01
          • 2022-01-07
          相关资源
          最近更新 更多