java基础概念14-控制台(命令行/终端)结果的输出、键盘录入

 一、静态成员变量:System.out

在Java中,控制台(也称为命令行或终端)结果的输出主要通过System.out.println()方法实现,这是Java中最常用的输出方式之一。System.outjava.lang.System类的一个静态成员变量,代表标准输出流(通常是控制台)。

1-1、println()方法

println()方法是PrintStream类的一个方法,用于向标准输出流打印一行文本,并在末尾自动添加一个换行符

public class HelloWorld {  
    public static void main(String[] args) {  
        // 向控制台输出一行文本  
        System.out.println("Hello, World!");  
    }  
}

1-2、print()方法

如果你想要输出文本但不希望在末尾添加换行符,可以使用System.out.print()方法。

public class PrintExample {  
    public static void main(String[] args) {  
        // 向控制台输出文本,但不换行  
        System.out.print("Hello, ");  
        System.out.print("World!");  
        // 这将输出:Hello, World!(没有换行)  
    }  
}

1-3、printf()方法

对于需要格式化输出的场景(比如打印数字或带有占位符的字符串),可以使用System.out.printf()方法。这个方法类似于C语言中的printf()函数。

public class PrintfExample {  
    public static void main(String[] args) {  
        int number = 123;  
        // 使用printf进行格式化输出  
        System.out.printf("The number is: %d%n", number);  
        // %d是整数占位符,%n是平台无关的行分隔符  
    }  
}

1-4、System.err错误输出

除了标准输出流System.out,Java还提供了标准错误输出流System.err,用于输出错误信息或警告信息。使用System.err.println()可以向错误输出流打印信息,这在调试程序或向用户报告错误时非常有用。

public class ErrorOutputExample {  
    public static void main(String[] args) {  
        // 向错误输出流打印信息  
        System.err.println("Error: Something went wrong!");  
    }  
}

打印效果: 

二、格式化字符串的占位符

 2-1、%s

%s 是一个格式化字符串的占位符,用于在 String.format() 方法或 System.out.printf() 方法中指示该位置应该被替换为一个字符串类型的参数。

当你使用这些方法时,%s 会被传递给方法的相应字符串参数所替换。

1、使用 String.format()

public class StringFormatExample {  
    public static void main(String[] args) {  
        String name = "Alice";  
        String greeting = String.format("Hello, %s!", name);  
        System.out.println(greeting); // 输出: Hello, Alice!  
    }  
}

在这个例子中,%s 被 name 变量的值 "Alice" 所替换。

2、使用 System.out.printf()

public class SystemOutPrintfExample {  
    public static void main(String[] args) {  
        String name = "Bob";  
        System.out.printf("Hello, %s!%n", name);  
        // 注意:%n 是一个平台无关的行分隔符,在Windows上是\r\n,在Unix/Linux上是\n  
    }  
}

输出效果:

 在这个例子中,%s 同样被 name 变量的值 "Bob" 所替换,并且使用了 %n 作为平台无关的行分隔符来结束输出行。

2-2、格式化字符串的其他占位符

除了 %s 之外,String.format() 和 System.out.printf() 还支持其他多种类型的占位符,例如:

  • %d 或 %i:表示整数。
  • %f:表示浮点数。
  • %t:表示日期/时间。
  • %c:表示字符。
  • %b:表示布尔值。

2-3、自定义占位符的行为

使用String.format()System.out.printf()方法时,你可以通过指定宽度、精度以及使用其他标志来自定义格式化字符串中的占位符行为。这些自定义选项允许你精确地控制输出格式,以满足各种需求。

语法:

%[flags][width].[precision]conversion

1、宽度(Width)

宽度指定了最小字段宽度。

如果参数的长度小于指定的宽度,则输出将被填充(默认情况下使用空格,但可以使用其他标志来改变填充字符)。如果参数的长度大于指定的宽度,则宽度设置将被忽略

// 输出:"     Hello" (前面填充了空格以达到10个字符的宽度)
System.out.printf("%10s%n", "Hello"); 

2、精度(Precision)

对于浮点数、字符串和字符数组,精度指定了小数点后的位数最大字符数。对于整数,精度通常被忽略,但某些情况下可以用于指定最小数字位数(通过与其他标志结合使用)。

// 输出:"3.14" (保留两位小数)
System.out.printf("%.2f%n", 3.1415926);   

// 输出:"Hello" (只取前5个字符)
System.out.printf("%.5s%n", "Hello, World!"); 

3、标志(Flags)

标志用于修改输出格式。常用的标志包括:

  • -:左对齐输出(默认情况下是右对齐)。
  • +:对于数值类型,输出符号(即使是非负数也输出+号)。
  • (空格):对于数值类型,如果符号为正,则在数值前面添加一个空格(默认情况下,正数前面没有空格)。
  • #:对于浮点数和整数,输出类型的替代形式(例如,十六进制数前面加上0x,八进制数前面加上0)。
  • 0:对于数值类型,使用0而不是空格进行填充(与宽度一起使用)。
System.out.printf("%-10s%n", "Hello"); // 输出:"Hello     " (左对齐,填充空格)  
System.out.printf("%+d%n", 42); // 输出:"+42" (带正号的整数)  
System.out.printf("%05d%n", 42); // 输出:"00042" (用0填充到5位宽度)  
System.out.printf("%#x%n", 255); // 输出:"0xff" (十六进制数的替代形式)

三、键盘录入

键盘录入通常是通过Scanner类实现的,这个类位于java.util包中。

import java.util.Scanner;  
  
public class KeyboardInputExample {  
    public static void main(String[] args) {  
        // 创建Scanner对象来读取键盘输入  
        Scanner scanner = new Scanner(System.in);  
 
        // 提示用户输入一个整数  
        System.out.println("请输入一个整数:");  
        // 使用nextInt()方法读取整数  
        int inputInt = scanner.nextInt();  
        // 输出用户输入的整数  
        System.out.println("你输入的整数是:" + inputInt);  
  
        // 关闭scanner对象  
        scanner.close();  
    }  
}

记得在程序结束时关闭Scanner对象,以释放与之相关的资源。这可以通过调用scanner.close()来实现。

然而,如果你在一个大型项目中频繁地打开和关闭Scanner对象,可能会遇到NoSuchElementException异常。在这种情况下,考虑重用Scanner对象或只在必要时关闭它。

 

3-1、第一套体系:

nextInt():接收整数
nextDouble():接收小数
next():接收字符串

遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接受了

示例:

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入第一个整数");
        int num1 = scanner.nextInt();
        System.out.println(num1);

        System.out.println("请输入第二个整数");
        int num2 = scanner.nextInt();
        System.out.println(num2);

        scanner.close();
    }

空格前的数字给到了num1,空格后的数字给到了num2。 


3-2、第二套体系:

nextLine():接收字符串

可以接收空格,制表符,遇到回车才停止接受数据。

不要混用!!!

先用第一套系统读取数据,再用第二套体系读取数据,可能会遇到问题。这是因为nextInt()nextDouble()等方法不会消耗掉输入末尾的换行符(Enter键产生的),而nextLine()会读取到换行符为止的所有内容(包括换行符之前的空白字符,如空格和制表符)。因此,如果你在读取整数之后立即调用nextLine(),它会返回空字符串,因为它实际上读取了整数输入后的换行符。

建议先用第一套,后面用到类型转换再用第二套。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值