从键盘分别输入通过空格分割的整型(int)、浮点型(double)、字符型(String)、布尔型(boolean),根据读取的内容判断他们的类型并将他们解析为正确的对象,并都放到一个数组中。输出各个对象的类型 输入格式: 字符串 输出格式: 数据类型
时间: 2024-12-04 07:22:19 浏览: 11
为了实现这个功能,你可以使用Java的`Scanner`类来获取用户的输入,然后通过`split()`方法按空格分割输入值。接着,根据每项输入尝试将其转换为相应的数据类型并存储在一个动态类型的数组或列表中。这里是一个简单的示例代码:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class InputParser {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用空格分隔的数据:");
ArrayList<Object> data = new ArrayList<>();
String input = scanner.nextLine();
String[] values = input.split("\\s+"); // Split by whitespace
for (String value : values) {
try {
if (value.isEmpty()) continue; // Skip empty values
if (isInteger(value)) { // Integer
data.add(Integer.parseInt(value));
System.out.printf("添加了一个Integer: %d%n", Integer.parseInt(value));
} else if (isDouble(value)) { // Double
data.add(Double.parseDouble(value));
System.out.printf("添加了一个Double: %.2f%n", Double.parseDouble(value));
} else if (isBoolean(value)) { // Boolean
data.add(Boolean.parseBoolean(value));
System.out.printf("添加了一个Boolean: %b%n", Boolean.parseBoolean(value));
} else { // Assume it's a string
data.add(value);
System.out.printf("添加了一个String: '%s'%n", value);
}
} catch (NumberFormatException e) {
System.out.println("无法解析为指定类型, 保留为String: " + value);
}
}
scanner.close();
// 输出数据类型
System.out.println("数据类型:");
for (Object obj : data) {
System.out.println(obj.getClass());
}
}
private static boolean isInteger(String str) {
return str.matches("-?[0-9]+");
}
private static boolean isDouble(String str) {
return str.matches("-?\\d+(\\.\\d+)?");
}
private static boolean isBoolean(String str) {
return str.equalsIgnoreCase("true") || str.equalsIgnoreCase("false");
}
}
```
在这个代码中,我们定义了三个辅助方法 `isInteger()`, `isDouble()`, 和 `isBoolean()` 来检查输入是否符合相应类型的正则表达式。如果无法转换为指定类型,我们将直接将输入视为字符串。
运行这段程序后,用户按照提示输入数据,程序会显示每个值的类型以及它们被解析后的对象。如果遇到无法识别的类型,将会作为字符串添加到数组中。
阅读全文