Java-无法转换为双精度

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新手,但不懂编程

当我试图从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新手,但不懂编程,所以我不确定该怎么办,因为我已经检查过的数字是双倍的,但当我尝试从数组中选择一个项目或比较最高的 以下是完整的代码:

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+"   ");
       }