目录

 

标题    

输出到控制台

💬 基本语法

💬 格式化字符串

从键盘输入(坑爹呀)

💬 读入一个字符 (选学)

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

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

🔻注意事项 ctrl + z

🔻 注意事项(大坑1)

🔻 注意事项(大坑2)


    

​ <figcaption> 上一篇 </figcaption>

   

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

带好口罩了嘛?

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

我们一起来看看吧~

   

输出到控制台

💬 基本语法

        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内部机制的不足,深究原因要考虑很多了,这里我就不探讨了,因此一般性我们做大型复杂项目千万不要写这种东西,你要参数直接传就行了,非必要不去写,况且解决方法也很多

      

<figcaption> 下一篇 </figcaption>