java中的输入-java.util.Scanner的用法

本文介绍了一个Java程序示例,演示如何使用Scanner类从控制台读取八种基本数据类型(包括整型、浮点型、布尔型)及字符串类型的输入。此外,还展示了如何从字符串中获取字符。
八种基本数据类型和字符串类型
package TX;

import java.util.Scanner;

public class Input {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		//七种基本数据类型
		int i = input.nextInt();
		byte b = input.nextByte();
		Double d = input.nextDouble();
		Float f = input.nextFloat();
		short s = input.nextShort();
		long l = input.nextLong();
		boolean bo = input.nextBoolean(); 
		
		//字符串类型
		String string = input.nextLine();
		
		//字符类型的获取不能直接得到,通过字符串获得
		String chString = input.nextLine();
		char ch = chString.charAt(0);
	}
}

Java 程序中,`java.util.NoSuchElementException` 异常通常在使用 `Scanner` 类时出现,特别是在调用 `Scanner` 的访问器方法(如 `next()`、`nextInt()` 等)时,表示被请求的元素不存在 [^2]。 ### 原因分析 1. **输入流提前关闭**:尽管可以创建多个 `Scanner` 对象使用同一个 `System.in` 输入流,但一旦关闭了输入流,后续的 `Scanner` 对象调用读取方法(如 `next()`)时就会报错 [^3]。 示例代码: ```java import java.util.Scanner; public class Test1 { public static void main(String[] args) { Scanner scanner1 = new Scanner(System.in); int num1 = scanner1.nextInt(); scanner1.close(); // 关闭流 Scanner scanner2 = new Scanner(System.in); try { int num2 = scanner2.nextInt(); // 这里会抛出 NoSuchElementException } catch (Exception e) { e.printStackTrace(); } } } ``` 2. **没有更多可用元素**:当使用 `Scanner` 读取输入时,如果已经到达输入的末尾,再调用读取方法就会抛出该异常。 示例代码: ```java import java.util.Scanner; public class Test2 { public static void main(String[] args) { Scanner scanner = new Scanner("123"); int num1 = scanner.nextInt(); int num2 = scanner.nextInt(); // 这里会抛出 NoSuchElementException } } ``` ### 解决方案 1. **避免重复关闭输入流**:在使用多个 `Scanner` 对象时,只在程序结束时关闭一次输入流,或者不关闭输入流。 示例代码: ```java import java.util.Scanner; public class Test3 { public static void main(String[] args) { Scanner scanner1 = new Scanner(System.in); int num1 = scanner1.nextInt(); Scanner scanner2 = new Scanner(System.in); int num2 = scanner2.nextInt(); // 可以选择在程序结束时关闭一次 scanner2.close(); } } ``` 2. **在读取前检查是否有可用元素**:在调用 `next()` 或 `nextInt()` 等方法之前,先使用 `hasNext()` 或 `hasNextInt()` 等方法检查是否还有可用元素。 示例代码: ```java import java.util.Scanner; public class Test4 { public static void main(String[] args) { Scanner scanner = new Scanner("123"); if (scanner.hasNextInt()) { int num1 = scanner.nextInt(); System.out.println(num1); } if (scanner.hasNextInt()) { int num2 = scanner.nextInt(); System.out.println(num2); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值