java - 我想创建一个变量,可以将 int、float 和 double 值发送到我的自定义 ArrayList
问题描述
我有我的自定义数组列表 MyArrayList。那只能存储 int、float 或 double 值。但我想从用户输入中得到它。我有一个临时字符串变量,它作为字符串输入。现在我想添加那个数组列表。所以必须首先将字符串转换为其类型。
class MyArrayList<E> extends ArrayList<E>{
@Override
public boolean add(E e) {
if(e instanceof Integer || e instanceof Float || e instanceof Double) {
super.add(e);
return true;
} else {
throw new ClassCastException("Please enter Integer, Float or Double");
}
}
}
public class TestArrayList{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
MyArrayList<Object> arraylist = new MyArrayList<>();
Object object = new Object();
try {
System.out.println("Enter Elements");
System.out.println("To stop input press '.'");
String temp;
while(scanner.hasNext()) {
temp = scanner.nextLine();
try {
object = temp;
} catch(Exception e) {}
if(temp.equals(".")) break;
else
arraylist.add(temp);
}
scanner.close();
System.out.println(arraylist.toString());
} catch(Exception e) {
System.out.println(e);
}
}
}
解决方案
这是一个有点奇怪的要求,因为您只能存储Object
在您的类中,并且instanceof
当您从列表中获取元素时必须使用。转换字符串的一种简单方法是尝试转换然后捕获但忽略任何这样的异常
public static Object convertToSomeNumber(String input) {
try {
return Integer.valueOf(input);
} catch (Exception e) {
}
try {
return Double.valueOf(input);
} catch (Exception e) {
}
return null;
}
现在您可以在temp
变量上使用它,如果结果不为空,则将结果添加到列表中。
请注意,我忽略了 Float,所以如果你想支持它,你需要自己添加它。
推荐阅读
- time-series - 具有多元协变量的 ARIMA 模型?
- laravel - Laravel 会话更改在 2 个页面重新加载/重定向后不会持续存在
- swift - SwiftUI:在 tvOS 上获取当前关注的 NavigationView 项目索引
- .net - Azure 管道 - dotnet 发布覆盖 VSBuild .zip 然后抱怨找不到它们
- python - Python Web 应用程序 - 关于长时间请求的问题
- r - 如何将重复节点修剪到最近的共同祖先?数据树 R
- visual-studio-code - vscode 自动导入 import * as console from 'console'
- java - 将 HTTP 请求中的多个参数发送到 NetBeans 时,我的 @Path 注释有什么问题?
- flutter - Flutter:如何正确显示带有 listview.builder 的表单?
- python - 无法从 Python 3.x 以 .txt 格式保存文件