当前位置:首页分享Java从入门到放弃(十二):输入和输出

Java从入门到放弃(十二):输入和输出

输出

在Java编程中,我们经常使用System.out.println()方法来向控制台输出信息,并在输出后自动换行。这个方法是println的缩写,意味着”print line”。如果我们需要输出内容但不希望在末尾添加换行符,可以使用System.out.print()方法:

public class Main {
    public static void main(String[] args) {
        System.out.print("A,"); // 输出"A,"后不换行
        System.out.print("B,"); // 输出"B,"后不换行
        System.out.print("C."); // 输出"C."后不换行
        System.out.println(); // 输出换行
        System.out.println("END"); // 输出"END"后换行
    }
}

观察上述代码的执行效果,可以看到前三项输出内容是连续的,没有换行,而之后的两个输出项则各自独占一行。

对于数据的格式化输出,Java提供了System.out.printf()方法。这个方法允许我们按照指定的格式输出数据,使得输出结果更加符合人类的阅读习惯。例如,对于浮点数,如果不进行格式化,Java会以科学记数法的形式输出:

public class Main {
    public static void main(String[] args) {
        double d = 12900000;
        System.out.println(d); // 输出1.29E7
    }
}

为了将浮点数按照我们期望的格式显示,比如固定小数点后的位数,我们可以使用printf()方法,并在格式字符串中使用占位符%来指定格式化规则:

// 格式化输出
public class Main {
    public static void main(String[] args) {
        double d = 3.1415926;
        System.out.printf("%.2f\n", d); // 显示两位小数,输出3.14
        System.out.printf("%.4f\n", d); // 显示四位小数,输出3.1416
    }
}

Java提供了强大的格式化功能,允许我们以各种方式将数据转换成字符串形式输出。这些格式化操作是通过System.out.printf()方法实现的,它使用特定的占位符来指定数据的输出格式。以下是一些常用的占位符及其说明:

  • %d:用于格式化输出十进制整数。
  • %x:用于格式化输出十六进制整数,字母以小写形式表示。
  • %f:用于格式化输出浮点数,可指定小数点后的位数。
  • %e:用于格式化输出科学计数法表示的浮点数。
  • %s:用于格式化输出字符串。

值得注意的是,由于%符号被用作格式化的前缀,所以当我们需要在输出中直接显示一个%字符时,需要使用两个连续的%%来表示。

除了基本的占位符,printf()方法还允许我们添加详细的格式化参数,以便更精确地控制输出格式。例如,我们可以指定输出的宽度、是否左对齐、小数点后保留的位数等。以下是一个格式化整数为十六进制并用0补足固定位数的例子:

public class Main {
    public static void main(String[] args) {
        int n = 12345000;
        // 使用%08x格式化n为十六进制数,并确保至少有8位,不足的前面补0
        System.out.printf("n=%d, hex=%08x%n", n, n);
        // 输出结果类似于:n=12345000, hex=0xc0a7d14
    }
}

在这个例子中,%08x指示printf()方法输出十六进制数,并且至少占用8个字符的宽度,如果不足8位,则在前面补0%n是一个特殊的转义序列,用于输出当前平台的换行符。

有关详细的格式化参数和更多高级格式化选项,可以参考Java官方文档中的java.util.Formatter类。

输入

在Java中,处理输入通常比输出更为复杂。一个常见的例子是使用Scanner类从控制台读取用户输入的字符串和整数。以下是如何实现这一过程的步骤:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象
        System.out.print("Input your name: "); // 打印提示
        String name = scanner.nextLine(); // 读取一行输入并获取字符串
        System.out.print("Input your age: "); // 打印提示
        int age = scanner.nextInt(); // 读取一行输入并获取整数
        System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出
    }
}

首先,我们需要导入java.util.Scanner类,这是Java提供的一个便捷工具,用于解析文本并获取不同类型的输入。导入语句通常放在Java源代码文件的顶部。

接下来,我们创建一个Scanner对象,它将用于接收用户的输入。Scanner对象的构造函数接受一个输入流作为参数,在这里我们使用System.in,它代表标准输入流,也就是键盘输入。

有了Scanner对象之后,我们可以使用它来读取用户的输入。nextLine()方法用于读取用户输入的一行文本,并将其作为字符串返回。而nextInt()方法则用于读取用户输入的下一个整数。

最后,我们使用printf()方法来格式化输出读取到的信息。

为了测试这个程序,我们需要先编译它:

$ javac Main.java

编译成功后,运行编译生成的类文件:

$ java Main

在控制台中按照提示输入相应的信息,程序将会输出格式化后的问候语。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧