> 文档中心 > [JavaSE] 输入输出

[JavaSE] 输入输出

目录

 

标题    

输出到控制台

💬 基本语法

💬 格式化字符串

从键盘输入(坑爹呀)

💬 读入一个字符 (选学)

💬 使用 Scanner 读取字符串/整数/浮点数

💬 使用 Scanner 循环读取 N 个数字

🔻注意事项 ctrl + z

🔻 注意事项(大坑1)

🔻 注意事项(大坑2)


    

上一篇


   

疫情当前,大家要做好防护哦。

带好口罩了嘛?

今天的知识点较为简单,但是坑爹!

我们一起来看看吧~

   

输出到控制台

💬 基本语法

 System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出

   

⚫ println 输出的内容自带 \n, print 不带 \n

⚫ printf 的格式化输出方式和 C 语言的 printf 是基本一致的

  

📝 代码示例

public class cs {    public static void main(String[] args) { System.out.println("Nick");  int x = 520; System.out.printf("x = %d\n",x);    }}//     Nick//     x = 520

           

💬 格式化字符串

  

转换符

类型

举例

d

十进制整数

("%d",100)

100

x

十六进制整数

("%x",100)

64

o

八进制整数

("%o",100)

144

f

定点浮点数

("%f",100f)

100.000000

e

指数浮点数

("%e",100f)

1.000000e+02

g

通用浮点数

("%g",100f)

100.000

a

十六进制浮点数

("%a",100)

0x1.9p6

s

字符串

("%s",100)

100

c

字符

("%c",1’)

1

布尔值

("%b",100)

true

h

散列码

("%h",100)

64

%

百分号

("%.2f%%",2/7f)

0.29%

   

🔴 这个表格没必要记住, 用到的时候根据需要查一下就行了

         

从键盘输入(坑爹呀)

💬 读入一个字符 (选学)

   

🔵 直接使用 System.in.read 可以读入一个字符. 但是需要搭配异常处理(后面会重点讲到)

   

   System.out.print("Enter a Char:");    char i = (char) System.in.read();    System.out.println("your char is :"+i);// 编译出错Test.java:4: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出 char i = (char) System.in.read();

     

   

✔ 正确写法

import java.io.IOException; // 需要导入 IOException 包public class cs {    public static void main(String[] args) throws IOException { System.out.print("Enter a Char:"); char i = (char) System.in.read(); System.out.println("your char is :" + i);    }}

         

🔵 这种方式比较麻烦, 我们不推荐使用。


  

💬 使用 Scanner 读取字符串/整数/浮点数

import java.util.Scanner; // 需要导入 util 包public class cs {    public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入你的姓名:"); String name = sc.nextLine(); System.out.println("请输入你的年龄:"); int age = sc.nextInt(); System.out.println("请输入你体重:"); float heavy = sc.nextFloat(); System.out.println("你的信息如下:"); System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"体重:"+heavy+"kg"); sc.close(); // 注意, 要记得调用关闭方法    }}

        


   

💬 使用 Scanner 循环读取 N 个数字

    Scanner sc = new Scanner(System.in);    double sum = 0.0;    int num = 0; while (sc.hasNextDouble()) { double tmp = sc.nextDouble(); sum += tmp; num++;    } System.out.println("sum = " + sum); System.out.println("avg = " + sum / num); sc.close();// 执行结果10 40.0 50.5 ^Z sum = 150.5 avg = 30.1 

   

🔻注意事项 ctrl + z

    

💠 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d)

   

🔻 注意事项(大坑1)

import java.util.Scanner; // 需要导入 util 包public class cs {    public static void main(String[] args) {     Scanner src = new Scanner(System.in); int b = src.nextInt(); String a = src.nextLine(); System.out.println(a); System.out.println(b); }}

   

     

    

💠 我们发现读完数字后直接输出了,你可以理解为String是回车,因此一般性我们先读取字符串,在读取其他类型

   

import java.util.Scanner; // 需要导入 util 包public class cs {    public static void main(String[] args) {     Scanner src = new Scanner(System.in); String a = src.nextLine(); int b = src.nextInt(); System.out.println(a); System.out.println(b); }}

      


    

🔻 注意事项(大坑2)

public class cs {    public static void main(String[] args) { Scanner src = new Scanner(System.in); String a =src.next(); int b = src.nextInt(); if(b%==0){     System.out.println("123"); }    }}

   

   

💠 我们发现输入不匹配异常,二个输入语句没有执行,为什么呢?next遇到空格即结束,因此要用nextLine,读取一整行。我们来看正确代码。

    

public class cs {    public static void main(String[] args) { Scanner src = new Scanner(System.in); String a =src.nextLine(); int b = src.nextInt(); if(b%==0){     System.out.println("123"); }    }}

   


总结

🔴 java里面坑爹的输入机制还有很多很多,Nick只列举了几个,这是 java内部机制的不足,深究原因要考虑很多了,这里我就不探讨了,因此一般性我们做大型复杂项目千万不要写这种东西,你要参数直接传就行了,非必要不去写,况且解决方法也很多

      

下一篇