Java-无法转换为双精度
当我试图从arraylist获取一个项时,它会给我一个错误提示Java-无法转换为双精度,java,arraylist,Java,Arraylist,当我试图从arraylist获取一个项时,它会给我一个错误提示 error: incompatible types: Object cannot be converted to double double highest = numbers.get(0); 还有这个 error: bad operand types for binary operator '<' if(highest < numbers.get(i)){ 我是java新手,但不懂编程
error: incompatible types: Object cannot be converted to double
double highest = numbers.get(0);
还有这个
error: bad operand types for binary operator '<'
if(highest < numbers.get(i)){
我是java新手,但不懂编程,所以我不确定该怎么办,因为我已经检查过的数字是双倍的,但当我尝试从数组中选择一个项目或比较最高的import java.io.*;
import java.util.*;
import java.util.ArrayList;
public class Main {
public static void main (String[] args)throws IOException{
boolean keepRunning = true;
ArrayList numbers = new ArrayList();
ArrayList sortedNumbers = new ArrayList();
while(keepRunning){
Scanner input = new Scanner(System.in);
System.out.print("Do you want to sort the numbers or add a number?");
String answer = input.nextLine();
if(answer.equals("sort")){
double highest = numbers.get(0);
for(int i = 0; i < numbers.size(); i++){
if(highest < numbers.get(i)){
highest = numbers.get(i);
}
System.out.print(numbers.get(i));
}
// System.out.println(highest);
System.out.println("Bye Bye.");
keepRunning = false;
}else if(answer.equals("add")){
System.out.print("What number to you want to add?");
numbers.add(Double.parseDouble(input.nextLine()));
System.out.println("Added number.");
}else{
System.out.println("That is not an option.");
}
}
}
}
因为在构建列表ArrayList numbers=new ArrayList时没有使用泛型;JVM将允许该列表包含任何类型的对象。因此,您需要包括泛型ArrayList numbers=newArrayList;或在从列表中检索值时强制转换:
double highest = (double) numbers.get(0);
if(highest < (double) numbers.get(i)){
highest = numbers.get(i);
}
因为在构建列表ArrayList numbers=new ArrayList时没有使用泛型;JVM将允许该列表包含任何类型的对象。因此,您需要包括泛型ArrayList numbers=newArrayList;或在从列表中检索值时强制转换:
double highest = (double) numbers.get(0);
if(highest < (double) numbers.get(i)){
highest = numbers.get(i);
}
创建ArrayList时,需要标识objectType,无论它是Integer、String、Double,甚至是自定义类 请注意,ArrayList目前无法在Java中使用,因为double是一种基本数据类型。因此,您需要使用它的包装类Double。但是,Java能够在需要时自动将double转换为double,反之亦然。此过程称为自动装箱或取消装箱 您当前正在执行的操作(即未标识对象类型)称为原始类型 它是当时的产物,泛型在1.5版以下的Java中不可用。强烈反对这种用法
即使要将所有内容放入其中,也应该至少使用List而不是List。创建ArrayList时,需要标识objectType,无论它是Integer、String、Double还是自定义类 请注意,ArrayList目前无法在Java中使用,因为double是一种基本数据类型。因此,您需要使用它的包装类Double。但是,Java能够在需要时自动将double转换为double,反之亦然。此过程称为自动装箱或取消装箱 您当前正在执行的操作(即未标识对象类型)称为原始类型 它是当时的产物,泛型在1.5版以下的Java中不可用。强烈反对这种用法
即使你想把所有的东西都放进去,你也应该至少使用List而不是List。你需要指定数组列表的类型。否则它将是默认的对象类型
ArrayList<Double> numbers = new ArrayList();
您需要指定数组列表的类型。否则它将是默认的对象类型
ArrayList<Double> numbers = new ArrayList();
不能对泛型使用关键字,它应该是:ArrayList list=new ArrayList;。此外,您必须始终识别对象类型。基本数据类型的一般用法在Java中是不可能的,至少目前是这样。您需要使用包装类Double等。哦,好的!对不起您需要识别“-嗯,可以不使用它,这称为原始类型。然而,强烈反对使用原始类型,它只是为了向下兼容。@Zabuza,出于好奇,为什么要使用原始类型?不能对泛型使用关键字,它应该是:ArrayList=new ArrayList;。此外,您必须始终识别对象类型。基本数据类型的一般用法在Java中是不可能的,至少目前是这样。您需要使用包装类Double等。哦,好的!对不起您需要识别“-嗯,可以不使用它,这称为原始类型。然而,强烈反对使用原始类型,它只是为了向下兼容。@Zabuza,出于好奇,为什么要使用原始类型?
double highest = (double)numbers.get(0);
for(int i = 0; i < numbers.size(); i++){
int compare = Double.compare(highest, (double)numbers.get(i));
if(compare < 0){
highest = (double)numbers.get(i);
}
System.out.print(highest+" ");
}