Java ArrayList。ArrayList到int和double
我的问题是,我无法从Java ArrayList。ArrayList到int和double,java,arraylist,int,double,Java,Arraylist,Int,Double,我的问题是,我无法从arraylist中提取一个数字,并将其转换为int或double,我必须使用体重和身高计算BMI。请看一看 任务是输入客人的体重、长度和姓名,并对长高比不好的客人进行分类。大体上,我创建了一个包含几个来宾的数组,当我运行它时,它会显示: "Exception in thread "main" java.lang.NumberFormatException: For input string "name" 及 饮食课程如下: public class Diet{
arraylist
中提取一个数字,并将其转换为int
或double
,我必须使用体重和身高计算BMI。请看一看任务是输入客人的体重、长度和姓名,并对长高比不好的客人进行分类。大体上,我创建了一个包含几个来宾的数组,当我运行它时,它会显示:
"Exception in thread "main" java.lang.NumberFormatException: For input string "name"
及
饮食
课程如下:
public class Diet{
public static ArrayList<Guest> putOnDiet(ArrayList <Guest> list){
ArrayList<Guest> namn = new ArrayList<Guest>();
ArrayList<Guest> hej = new ArrayList<Guest>();
for(int i = 0; i<=list.size()/3; i = i+3){
int langd = Integer.parseInt(list.get(i+1).toString()); //I dont know how to make this work
double vikt = Double.parseDouble(list.get(i).toString());
String name = list.get(i+2).toString();
if ((vikt) > 1.08*(0.9*(langd -100))){
namn.add(new Guest(vikt, langd, name));
}
}
return namn;
}
}
您确定要分析的是整数吗 当无法解析编号时,会引发编号解析异常。当字符串不是像“somthing#$%^&”这样的数字时。所以试着换掉这条线
int langd = Integer.parseInt(list.get(i+1).toString());
用这个
try {
int langd = Integer.parseInt(list.get(i+1).toString());
} catch (NumberFormatException e) {
System.out.println(list.get(i+1).toString() +" : This is not a number");
System.out.println(e.getMessage());
}
编辑在阅读了WOUNDEDStevenJones的答案后,我还认为您甚至不应该使用toString()或解析方法。有关更多详细信息,请参阅WOUNDEDStevenJones答案。看起来您需要将其更改为
for (int i=0; i<list.size(); i++) {
double langd = list.get(i).getLength();
double vikt = list.get(i).getWeight();
String name = list.get(i).getName();
}
for(int i=0;i方法列表。get(i)将返回类型为Guest
Guest
的对象,其中包含方法、getWeight()
和getLength()
这实际上会给你一个双倍的值作为回报。
以及
这应该能够解析
希望这有帮助
_san旁注:避免在代码中使用幻数。代码的上半部分是问题的一部分^^^好吧,你的toString
方法不是以string
的形式返回int
,而是返回一个string
,它无法解析为int
。而且,这些值都不是de>int
s,因此可能需要使用Double.parseDouble()
。真正的问题是,您试图将类似于test\n40.2\n16.1
的东西转换为int
。计算机应该如何做到这一点?使用int langd
的最终结果是什么?我使用了这个方法,它可以编译,除非运行main,否则我会得到“线程中的异常”main“java.lang.NoSuchMethodError:Guest.(DDLjava/lang/String;)V”顺便说一句,谢谢你的帮助!不,等等,我做了一些tweeks,现在它工作得很好!非常感谢!感谢大家的帮助!
try {
int langd = Integer.parseInt(list.get(i+1).toString());
} catch (NumberFormatException e) {
System.out.println(list.get(i+1).toString() +" : This is not a number");
System.out.println(e.getMessage());
}
for (int i=0; i<list.size(); i++) {
double langd = list.get(i).getLength();
double vikt = list.get(i).getWeight();
String name = list.get(i).getName();
}
list.get(i).getWeight()
Integer.parseInt(list.get(i).getWeight().toString())