在Java中如何从控制台读取输入

时间:2020-01-09 10:35:30  来源:igfitidea点击:

如果必须从Java控制台读取输入,则有3个选项。

  • 使用BufferedReader类。参见示例。
  • 使用Java 5中提供的Scanner类。请参见示例。
  • 使用Java 6中提供的System.console()方法。请参见示例。

使用BufferedReader类

通过将标准输入流" System.in"包装在InputStreamReader中,并进一步包装在BufferedReader中,我们可以使用Java从控制台读取输入。

public class ConsoleReader {
  public static void main(String[] args) {
    // Wrapping InputStreamReader and System.in
    BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter City Name: ");            
    try {            
      String cityName = bufferRead.readLine();
      System.out.println("Entered city name- " + cityName);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

输出:

Enter City Name: Delhi
Entered city name- Delhi

使用扫描仪类

从Java中的控制台读取输入的另一种方法是使用Scanner类。扫描程序使用定界符模式将其输入分为令牌,默认情况下,该模式与空格匹配。然后可以将所得令牌转换为值。对于扫描输入,有用于不同数据类型的便捷方法,例如nextInt(),nextDouble(),nextFloat()等。

public class ConsoleReader {
  public static void main(String[] args) {
    System.out.print("Enter Values: ");                             
    Scanner sc = new Scanner(System.in);
    System.out.println("Entered Line- " + sc.nextLine());
    System.out.println("Entered integer value- " + sc.nextInt());
    System.out.println("Entered double value- " + sc.nextInt());
    sc.close();
  }
}

输出:

Enter Values: Delhi
Entered Line- Delhi
56 67.89
Entered integer value- 56
Entered double value- 67.89

使用System.console方法

我们还可以使用System.console从Java中的控制台读取输入。使用System.console()方法的优点之一是,它返回一个Console对象,该对象具有readPassword()方法,该方法可用于在禁用回显的情况下从控制台读取密码或者密码。

public class ConsoleReader {
  public static void main(String[] args) {
    //Using System.console()
    String username = System.console().readLine("Enter City Name: ");   
    System.out.println("Entered city name- " + username); 
  }
}

输出:

Enter City Name: Delhi
Entered city name- Delhi

使用System.console方法读取密码

public class ConsoleReader {
  public static void main(String[] args) {
    //Using System.console()
    System.out.print("Enter password: ");
    char[] username = System.console().readPassword();   
    System.out.println("Entered password- " + username.toString()); 
  }
}

输出:

Enter password:
Entered password- [Hyman@theitroad

如我们所见,密码回显已禁用。