JAVA基础【3.7】《Java核心技术1》Java的基本程序设计结构-输入输出

来源:互联网 发布:mysql给root设置权限 编辑:程序博客网 时间:2024/06/05 14:45
1    输入
输入主要是Java Scanner 类和Console类
 Scanner 类详细可见:http://www.runoob.com/java/java-scanner-class..html
使用 next 方法
  1. import java.util.Scanner;
  2. public class ShuRuShuChu {
  3. public static void main(String[] args) {
  4. Scanner scan = new Scanner(System.in);
  5. // 从键盘接收数据
  6. //next方式接收字符串
  7. System.out.println("next方式接收:");
  8. // 判断是否还有输入
  9. if(scan.hasNext()){
  10. String str1 = scan.next();
  11. System.out.println("输入的数据为:"+str1);
  12. }
  13. }
  14. }

使用 nextLine 方法:
  1. public static void main(String[] args) {
  2. Scanner scan = new Scanner(System.in);
  3. // 从键盘接收数据
  4. //nextLine方式接收字符串
  5. System.out.println("nextLine方式接收:");
  6. // 判断是否还有输入
  7. if(scan.hasNextLine()){
  8. String str2 = scan.nextLine();
  9. System.out.println("输入的数据为:"+str2);
  10. }
  11. }

next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
  1. import java.util.Scanner;
  2. public class ScannerDemo {
  3. public static void main(String[] args) {
  4. Scanner scan = new Scanner(System.in);
  5. // 从键盘接收数据
  6. int i = 0 ;
  7. float f = 0.0f ;
  8. System.out.print("输入整数:");
  9. if(scan.hasNextInt()){
  10. // 判断输入的是否是整数
  11. i = scan.nextInt() ;
  12. // 接收整数
  13. System.out.println("整数数据:" + i) ;
  14. }else{
  15. // 输入错误的信息
  16. System.out.println("输入的不是整数!") ;
  17. }
  18. System.out.print("输入小数:");
  19. if(scan.hasNextFloat()){
  20. // 判断输入的是否是小数
  21. f = scan.nextFloat() ;
  22. // 接收小数
  23. System.out.println("小数数据:" + f) ;
  24. }else{
  25. // 输入错误的信息
  26. System.out.println("输入的不是小数!") ;
  27. }
  28. }
  29. }

执行以上程序输出结果为:

$ javac ScannerDemo.java$ java ScannerDemo输入整数:12整数数据:12输入小数:1.2小数数据:1.2
以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
  1. import java.util.Scanner;
  2. class ScannerDemo
  3. {
  4. public static void main(String[] args)
  5. {
  6. Scanner scan = new Scanner(System.in);
  7. double sum = 0;
  8. int m = 0;
  9. while(scan.hasNextDouble())
  10. {
  11. double x = scan.nextDouble();
  12. m = m + 1;
  13. sum = sum + x;
  14. }
  15. System.out.println(m+"个数的和为"+sum);
  16. System.out.println(m+"个数的平均值是"+(sum/m));
  17. }
  18. }

执行以上程序输出结果为:

$ javac ScannerDemo.java$ java ScannerDemo12231521.4end4个数的和为71.44个数的平均值是17.85

Console类
Java.io.Console类:JDK6中新增了Java Console类的功能,专用来访问基于字符的控制台设备。如果你的Java程序要与Windows下的cmd或者Linux下的Terminal交互,就可以用这个Java Console类代劳;
  1. public static void main(String[] args) {
  2. Console console = System.console(); // 获得Console实例对象
  3. if (console != null) { // 判断是否有控制台的使用权
  4. String user = new String(console.readLine("Enter username:")); // 读取整行字符
  5. String pwd = new String(console.readPassword("Enter passowrd:")); // 读取密码,输入时不显示
  6. console.printf("Username is: " + user + "\n"); // 显示用户名
  7. console.printf("Password is: " + pwd + "\n"); // 显示密码
  8. } else {
  9. System.out.println("Console is unavailable."); // 提示无控制台使用权限
  10. }
  11. }

a   在使用 IDE 的情况下,是无法获取到Console实例的,原因在于在 IDE 的环境下,重新定向了标准输入和输出流,也是就是将系统控制台上的输入输出重定向到了 IDE 的控制台中;
b   我们不总是能得到可用的Console, 一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用;
c   如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例。

java.lang.System.in 类
  1. public static void main(String[] args) {
  2. String str = readDataFromConsole("Please input string:");
  3. System.out.println("The information from console:" + str);
  4. }
  5. private static String readDataFromConsole(String prompt) {
  6. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  7. String str = null;
  8. try {
  9. System.out.print(prompt);
  10. str = br.readLine();
  11. }catch (IOException e) {
  12. e.printStackTrace();
  13. }
  14. return str;
  15. }

  1. Please input stringnihao nihao
  2. The information from consolenihao nihao

文件输入与输出
  1. public static void main(String[] args) {
  2. try {
  3. Scanner scan = new Scanner(new File("D:\\Workspaces\\Test\\test.txt"));
  4. if (scan.hasNextLine()) {
  5. String str1 = scan.nextLine();
  6. System.out.println("输入的数据为:" + str1);
  7. }
  8. } catch (FileNotFoundException e) {
  9. // TODO Auto-generated catch block
  10. e.printStackTrace();
  11. }
  12. }

只能读取一行数据。

文件输入
  1. public static void main(String[] args) {
  2. try {
  3. PrintWriter out = new PrintWriter("D:\\Workspaces\\Test\\test1.txt");
  4. out.print("你好");
  5. out.close();
  6. Scanner scan = new Scanner(new File("D:\\Workspaces\\Test\\test1.txt"));
  7. if (scan.hasNextLine()) {
  8. String str1 = scan.nextLine();
  9. System.out.println("输入的数据为:" + str1);
  10. }
  11. } catch (FileNotFoundException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. }
  15. }
 
0 0
原创粉丝点击