包和导入包
Java 中的类(Class
)都被放在一个个包(package
)里面。在一个包里面不允许有同名的类。在类的第一行通常要说明这个类是属于哪个包的。例如:
1 | package org.oi-wiki.tutorial; |
包的命名规范一般是:项目所有者的顶级域.项目所有者的二级域.项目名称
。
通过 import
关键字来导入不在本类所属的包下面的类。例如下面要用到的 Scanner
:
1 | import java.util.Scanner; |
如果想要导入某包下面所有的类,只需要把这个语句最后的分号前的类名换成 *
。
输入
1 | package org.oiwiki.tutorial; |
可以看到java的输入和输出是不一样的
System.in vs scanf:
- System.in: 在Java中,
System.in
是一个字节流(InputStream
),它用于读取字节数据,而不是像scanf
一样直接处理格式化的输入。因此,处理用户输入时,通常需要使用其他类(比如Scanner
或者BufferedReader
)来将字节流转换为更易处理的形式(比如文本或者基本数据类型)。 - scanf: 在C语言中,
scanf
是一个函数,它能够按照指定的格式从标准输入(通常是键盘)读取数据,并且可以将数据格式化为不同的数据类型(整数、浮点数、字符串等)。scanf
的格式化字符串允许精确地指定输入数据的格式,这使得它在处理格式化输入时非常方便。
- System.in: 在Java中,
Java的输入方式:
- 在Java中,虽然没有像
scanf
那样直接的格式化输入函数,但是有几种方式可以实现类似的功能:- 使用
Scanner
类:Scanner
类可以从System.in
中读取数据,并且提供了各种方法来解析不同数据类型(如整数、浮点数、字符串)。 - 使用
BufferedReader
和InputStreamReader
:这些类可以用于读取字符流,并且可以进行高效的文本处理,尤其适合处理大量输入。 - 使用
Console
类:Java 6 引入了Console
类,它提供了一些基本的输入方法,但它的功能相对有限。
- 使用
- 在Java中,虽然没有像
scanner
当你需要从用户输入数据时,Java中的 Scanner
类是一个非常常用且方便的工具。它可以帮助你从各种输入源(如 System.in
,文件等)中读取数据,并且支持不同的数据类型。
使用Scanner类进行输入
导入Scanner类: 在使用之前,首先需要导入
java.util.Scanner
包,因为Scanner
类位于java.util
包中。javaCopy Code
import java.util.Scanner;
创建Scanner对象: 使用
Scanner
类来处理输入。通常,你会创建一个Scanner
对象,并将其与特定的输入流(例如System.in
)相关联。javaCopy Code
Scanner scanner = new Scanner(System.in);
这样就创建了一个可以从标准输入(通常是键盘)读取数据的
Scanner
对象。读取不同类型的输入:
Scanner
类提供了多种方法来读取不同类型的数据。以下是一些常用的方法:- nextInt():读取一个整数。
- nextDouble():读取一个双精度浮点数。
- next():读取一个字符串,遇到空格或换行符停止。
- nextLine():读取一行输入,包括空格,直到换行符为止。
1 | import java.util.Scanner; |
java输入和输出
假设输入是:
1
Hello World Another Line
如果先调用 scanner.next()
,它会返回 "Hello"
,并留下 " World\nAnother Line"
在输入中。紧接着调用 scanner.nextLine()
会返回 " World"
(注意,没有换行符)。
如果先调用 scanner.nextLine()
,它会返回 "Hello World"
(包括空格但不包括换行符),紧接着调用 scanner.nextLine()
会返回 "Another Line"
。
**注意**:
- 在读取完整行文本之前,可能需要调用 `scanner.nextLine()` 来清除输入缓冲区。
- 使用完 `Scanner` 后,最好调用 `scanner.close()` 来释放资源,尤其是在程序结束时。
Scanner的灵活性与限制
- 灵活性:
Scanner
类提供了丰富的方法来处理各种类型的输入数据,可以满足大多数基本的输入需求。 - 限制:对于复杂的输入处理(如格式化的输入),可能需要额外的逻辑来处理或者考虑使用其他输入方法(如
BufferedReader
)。
通过熟悉 Scanner
类及其方法,你可以有效地处理用户输入,并在程序中进行相应的逻辑操作和处理。
输出
可以对变量进行格式化输出。
符号 | 意义 |
---|---|
%f |
浮点类型 |
%s |
字符串类型 |
%d |
整数类型 |
%c |
字符类型 |
1 | class Test { |