Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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
Java 在控制台中获取用户输入而不使用扫描仪_Java_Java.util.scanner - Fatal编程技术网

Java 在控制台中获取用户输入而不使用扫描仪

Java 在控制台中获取用户输入而不使用扫描仪,java,java.util.scanner,Java,Java.util.scanner,我想知道使用其他类(如BufferedReader等)而不是使用Scanner类从用户那里获取输入的其他方法。那么,有没有其他方法可以从用户那里获得输入?如果是这样,它是否比扫描仪类有效?使用以下方法: BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); 要在中为系统创建读卡器,您可以使用stdin.readLine() 使用BufferedReader比使用扫描仪更有效如果您使用的是Java

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

使用以下方法:

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
要在中为
系统创建读卡器,您可以使用
stdin.readLine()


使用
BufferedReader
比使用
扫描仪更有效如果您使用的是Java SE6或更高版本,则可以使用
控制台
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);
   }

您可以直接在
中使用系统,如下所示:

BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = r.readLine()) != null) {
    System.out.println(line);
}
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();
}

虽然这可能比使用
扫描器快一点,但它不是一个苹果对苹果的比较:
扫描器
提供了更多的输入标记化方法,而
缓冲阅读器
可以将输入拆分为行,而不必标记化它。

您只需通过以下步骤即可完成:

  • 使用
    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
    
  • 现在,由于
    readLine
    方法抛出一个
    IOException
    ,您需要捕获它。整个代码如下所示:

    BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
    String line;
    while ((line = r.readLine()) != null) {
        System.out.println(line);
    }
    
    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();
    }
    
  • 这里举个例子

    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]);
    
    用户可以在执行程序时输入数据,而无需使用scanner类,这可以通过使用以下程序完成

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

    C:\Users\Lenovo\Desktop>javademo52

    这里ab=5,ba=2。用户可以有任何数字或字符串,如果他愿意的话


    System.in是一个输入流。你可以直接阅读,也可以直接或间接使用任何包装它的类。它比Scanner类有效吗?@Gowtham更新了答案。但是如果您在eclipse中运行这个,那么它可能不会提供系统控制台。虽然有解决方法,但如果可能的话,请将eclipse的解决方法以及在命令行中运行该方法添加到您的答案中。