Java中的小知识记录

1.

System.out.printf("%6.2f\n", num);

        System.out.printf("%6.2f %6.2f\n", num, num);

        System.out.printf("%6.2f %6.2f %6.2f\n", num, num, num);

效果:

这些代码是使用Java中的`System.out.printf()`方法来格式化输出。让我解释一下:

- `%6.2f`:这是一个格式说明符,它告诉`printf()`方法如何格式化输出。在这里,`%`表示格式说明的开始,`f`表示要格式化的是浮点数。`6`表示总字段宽度为6,`.2`表示保留两位小数。所以`%6.2f`将浮点数格式化为总宽度为6,保留两位小数的形式。

- `\n`:这是换行符,它告诉程序在输出完一行后换行到下一行。

- `%6.2f %6.2f`:这表示在同一行上输出两个格式化的浮点数,中间用空格分隔。

- `%6.2f %6.2f %6.2f`:同理,这表示在同一行上输出三个格式化的浮点数,每个数之间用空格分隔。

所以,这些代码中的`printf()`语句用于按照给定的格式输出浮点数。

System.out.printf() 方法在 Java 中用于格式化输出,它基于 C 语言的 printf 函数,并允许你使用格式字符串来指定输出的格式。使用 printf() 方法时,你可以控制数字的精度、宽度、对齐方式等。

当你想要指定输出的小数位数时,可以在格式字符串中使用 %f 或 %.nf,其中 n 是你想要保留的小数位数。例如,%.2f 表示保留两位小数。

下面是一个使用 System.out.printf() 来指定输出小数位数的例子:

public class DecimalPlacesExample {  
    public static void main(String[] args) {  
        double number = 123.456789;  
          
        // 使用System.out.printf()方法格式化输出,保留两位小数  
        System.out.printf("The number is: %.2f%n", number);  
          
        // 这里的 %.2f 表示保留两位小数,%n 表示换行  
    }  
}

运行上述代码,你会看到以下输出:

The number is: 123.46

在 printf() 的格式字符串中:

  • % 表示开始一个格式说明符。
  • .2 表示保留两位小数。
  • f 表示浮点数。
  • %n 表示平台相关的行分隔符,在 UNIX/Linux 上是 \n,在 Windows 上是 \r\n

你可以根据需要调整 %.nf 中的 n 来改变保留的小数位数。同时,printf() 还支持其他类型的格式说明符,如 %d 用于整数,%s 用于字符串等。

当然,还有其他形式来保留几位小数

2.

什么时候需要加上nextLine();(总结起来就是,如果你输入字符串前有要输入基本数据类型的,就需要有nextLine),在读取整数后的下一行,使用 sc.nextLine() 来清空输入缓冲区。

在读取整数和读取字符串之间,添加 sc.nextLine() 来读取并丢弃多余的空行或换行符。

在Java中使用Scanner类读取输入时,特别是当输入包含多种类型(如整数和字符串)并且这些输入是连续的时候,通常需要格外注意换行符和输入缓冲区的状态。nextLine()方法会读取直到下一个换行符(包括换行符本身)为止的所有字符,并将其作为一个字符串返回。而nextInt(), nextDouble()等方法只会读取相应的整数或浮点数,然后停留在换行符之前,不会读取换行符。

以下是一些需要添加nextLine()的常见情况:

在读取非字符串类型之后读取字符串:当你首先使用nextInt(), nextDouble()等方法读取一个整数或浮点数后,紧接着使用nextLine()读取一个字符串时,如果不先调用nextLine()来消耗掉输入缓冲区中的换行符,nextLine()将会立即返回,因为它已经遇到了换行符。

java

Scanner sc = new Scanner(System.in);  

int number = sc.nextInt(); // 用户输入数字后按回车,换行符留在缓冲区中  

String text = sc.nextLine(); // 如果没有先调用sc.nextLine(),这里会立即返回空字符串

需要忽略多余的换行符:有时候用户可能在输入之间不小心多按了几次回车,导致输入缓冲区中有多个换行符。在这些情况下,使用nextLine()可以帮助清除这些额外的换行符。

在循环中读取输入:如果你在一个循环中读取输入,特别是当每次迭代都期望用户输入一个全新的值时,你可能需要在每次迭代开始时使用nextLine()来确保输入缓冲区是干净的。

要决定是否需要在特定情况下使用nextLine(),你应该考虑以下几点:

输入的类型:你是否在读取整数或浮点数之后立即读取字符串

输入的顺序:用户输入的顺序是否符合你的程序预期?

输入缓冲区的状态:你是否确信输入缓冲区中没有残留的换行符或其他字符?

如果你不确定是否需要使用nextLine(),一种简单的测试方法是尝试输入一些数据,并观察程序的行为是否符合预期。如果程序没有按预期工作,那么可能就需要考虑使用nextLine()来清理输入缓冲区。

未完待续......

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值