Java - 无法转换为double

时间:2017-10-09 18:27:50

标签: 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新手,但不是编程,所以我不确定要做什么,因为数字加倍(我已经检查过)但是当我尝试时它仍然会给我一个错误从数组中选择一个项目或比较(highest < numbers.get(i)

以下是完整代码:

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

4 个答案:

答案 0 :(得分:3)

因为在构造列表SELECT * INTO new_table FROM Mastersheet WHERE Mastersheet.column2 = 'placename1'; 时没有使用泛型,JVM将允许该列表包含任何类型的对象。因此,当您从列表中检索值时,您需要包含泛型ArrayList numbers = new ArrayList();或强制转换:

ArrayList<Double> numbers = new ArrayList<Double>();

答案 1 :(得分:1)

创建ArrayList时,您需要识别objectType ,无论是IntegerStringDouble,还是自定义类< /强>

ArrayList<ObjectType> list = new ArrayList<ObjectType>();

//In this case, the ObjectType is a double, so the code would be:

ArrayList<Double> list = new ArrayList<Double>();

请注意,ArrayList<double>不能在Java(当前)中使用,因为double原始数据类型。因此,您需要使用其包装类Double。但是,只要需要,Java就能自动将double转换为Double,反之亦然。此过程称为自动装箱(或-unboxing)。

您目前正在做的事情,即未识别对象类型,称为原始类型

这是Java中不存在泛型的时间(1.5版以下)的工件。 强烈建议不要使用

即使你想把所有内容放在里面,也应至少使用List<Object>而不只是List

答案 2 :(得分:0)

您需要指定数组列表的类型。否则它将是默认的对象类型。

 ArrayList<Double> numbers = new ArrayList();

否则将检索到的值转换为double。

double highest = (double)numbers.get(0);

答案 3 :(得分:0)

     CREATE TABLE tbl
        (INTid int 
        ,ID varchar (20)
        ,DrugLabelName varchar(200)
        )

    INSERT tbl (INTid, ID, DrugLabelName)
    SELECT  137272, '00004029830', 'old_drug_name'

    INSERT tbl (INTid, ID, DrugLabelName)
    SELECT  1668177, '00004029830', 'New_drug_name'

    INSERT tbl (INTid, ID, DrugLabelName)
    SELECT 1668178, '00004029831', 'Other_drug_name'

    GO

    UPDATE t
    SET DrugLabelName = x.DrugLabelName
    FROM tbl AS t
    INNER JOIN tbl as x
        ON t.ID = x.id
        AND x.INTid > t.INTid

    SELECT *
    FROM tbl

    DROP TABLE tbl