在Java中,`Scanner` 类是 `java.util` 包中的一个工具类,它用于从输入源(如键盘、文件、字符串等)读取和解析原始数据和格式化数据。`Scanner` 类能够解析基本数据类型和字符串,并通过使用正则表达式分隔符将输入分解成标记。
要使用 `Scanner` 类,你需要首先导入它:
```java
import java.util.Scanner;
```
接下来,你可以创建一个 `Scanner` 对象,并通过它读取用户输入或其他输入源的数据。以下是一个简单的示例,展示了如何使用 `Scanner` 类从控制台读取用户输入:
```java
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
// 创建一个Scanner对象,与System.in关联(标准输入,通常是键盘)
Scanner scanner = new Scanner(System.in);
// 使用scanner对象的next方法读取用户输入的字符串
System.out.print("请输入你的名字: ");
String name = scanner.next();
System.out.println("你好, " + name + "!");
// 读取一个整数
System.out.print("请输入一个整数: ");
int number = scanner.nextInt();
System.out.println("你输入的整数是: " + number);
// 读取一个浮点数
System.out.print("请输入一个浮点数: ");
double floatNumber = scanner.nextDouble();
System.out.println("你输入的浮点数是: " + floatNumber);
// 关闭scanner对象,释放与之关联的资源
scanner.close();
}
}
```
在这个例子中,我们创建了一个 `Scanner` 对象,并将其与 `System.in`(标准输入流,通常来自键盘)关联起来。然后,我们使用不同的 `Scanner` 方法(如 `next()`, `nextInt()`, `nextDouble()` 等)读取用户输入的不同类型的数据。
当你完成 `Scanner` 对象的使用后,记得调用其 `close()` 方法来关闭它,释放与之关联的资源。这在处理文件输入或其他需要显式关闭的输入源时尤为重要。然而,当使用 `System.in` 作为输入源时,调用 `close()` 方法可能会关闭标准输入流,这可能会影响到后续代码对标准输入的使用。因此,在处理键盘输入时,有时可以省略 `close()` 方法的调用。
需要注意的是,`Scanner` 类在处理用户输入时,默认使用空白字符(如空格、制表符和换行符)作为分隔符。如果需要更复杂的输入解析,可以使用 `useDelimiter()` 方法来设置自定义的分隔符。
if分支结构:
在Java中,`if` 分支结构用于基于某个条件执行特定的代码块。如果条件为 `true`,则执行 `if` 语句内的代码块;如果条件为 `false`,则跳过该代码块。下面是一个简单的示例:
```java
public class IfExample {
public static void main(String[] args) {
int number = 10;
// 使用if语句检查number是否大于5
if (number > 5) {
System.out.println("Number is greater than 5.");
}
}
}
```
在上面的例子中,我们定义了一个整数 `number` 并检查它是否大于5。如果是,则打印一条消息。
Java中的 `if` 语句也可以与 `else` 结合使用,以便在条件不满足时执行另一段代码:
```java
public class IfElseExample {
public static void main(String[] args) {
int number = 5;
// 使用if-else语句检查number是否大于5
if (number > 5) {
System.out.println("Number is greater than 5.");
} else {
System.out.println("Number is not greater than 5.");
}
}
}
```
在这个例子中,如果 `number` 大于5,则执行 `if` 代码块;否则,执行 `else` 代码块。
Java还支持 `else if` 语句,用于检查多个条件:
```java
public class IfElseIfExample {
public static void main(String[] args) {
int number = 10;
// 使用if-else if-else语句检查number的范围
if (number > 10) {
System.out.println("Number is greater than 10.");
} else if (number == 10) {
System.out.println("Number is equal to 10.");
} else {
System.out.println("Number is less than 10.");
}
}
}
```
在这个例子中,我们检查了 `number` 的三个不同范围,并根据满足的条件执行相应的代码块。
请注意,`if`、`else if` 和 `else` 语句必须按照正确的顺序排列,即 `if` 语句首先出现,其次是任何 `else if` 语句,最后是可选的 `else` 语句。而且,一旦某个条件为 `true`,就会执行相应的代码块,并且跳过所有后续的 `else if` 和 `else` 语句。
此外,从Java 7开始,还可以使用三元运算符(也被称为条件运算符)作为简单的 `if-else` 结构的替代:
```java
int a = 5;
int b = 10;
String result = (a > b) ? "a is greater" : "a is not greater";
System.out.println(result); // 输出 "a is not greater"
```
在这个例子中,三元运算符检查 `a` 是否大于 `b`,如果是,则结果为 `"a is greater"`,否则结果为 `"a is not greater"`。