【问题标题】:type mismatch: can't convert from double to int java类型不匹配:无法从 double 转换为 int java
【发布时间】:2013-12-08 07:03:37
【问题描述】:
public static void main(String[] args) {
try{
    BufferedReader br=new BufferedReader(new FileReader("file.txt"));

    String[] pole=br.readLine().split(" ");
    double L=Double.parseDouble(pole[0]);
    double N=Double.parseDouble(pole[1]);
    String[] weight=new String[N];
    double[] scale=new double[N];
    double[] place=new double[N];
    for(int i=0; i<N; i++){
        weight[i]=br.readLine();
        String[] variable=weight[i].split(" ");
        double variable1=Double.parseDouble(variable[0]);
        double variable2=Double.parseDouble(variable[1]);
        scale[i]=variable2;
        place[i]=variable1*variable2;               
    }

我有这个 java 代码。我想从文件中获取数字并将它们转换为双精度,但它给了我错误:类型不匹配:无法从双精度转换为整数。我该如何解决这个问题?

【问题讨论】:

    标签: java types int double type-mismatch


    【解决方案1】:

    因为 N 是 double 你需要一个类型案例

    String[] weight=new String[(int)N];
    

    原因是double 是浮点类型,不能创建length 1.5 的数组:)

    【讨论】:

    • 为什么要截断数据而不是舍入?
    • @Antoniossss 是的,但没有必要舍入。如果值 0.9 或 0.51 我从不创建元素 :) 在这种情况下两者都是相同的。
    【解决方案2】:

    N 是一个双精度数,但您正试图对其进行迭代。您必须键入强制转换它。

    【讨论】:

      【解决方案3】:

      你的问题在这里..

      double L=Double.parseDouble(pole[0]);
      double N=Double.parseDouble(pole[1]);
      

      改成

       int L=Integer.parseInt(pole[0]);
       int N=Integer.parseInt(pole[1]);
      

      因为int 只接受数组索引..

      【讨论】:

        【解决方案4】:

        试试这个

        public class Tuple {
        
            public static void main(String[] args) {
                try{
                    BufferedReader br=new BufferedReader(new FileReader("UserController.txt"));
        
                    String[] pole=br.readLine().split(" ");
                    double L=Double.parseDouble(pole[0]);
                    double N=Double.parseDouble(pole[1]);
                    System.out.println("L is "+L);
                    String[] weight=new String[(int) N];
                    double[] scale=new double[(int) N];
                    double[] place=new double[(int) N];
                    for(int i=0; i<N; i++){
                        weight[i]=br.readLine();
                        String[] variable=weight[i].split(" ");
                        double variable1=Double.parseDouble(variable[0]);
                        double variable2=Double.parseDouble(variable[1]);
                        scale[i]=variable2;
                        place[i]=variable1*variable2;               
                    }
                }
                    catch(Exception e) {
                        e.printStackTrace();
                    }
            }
         }
        

        【讨论】:

          猜你喜欢
          • 2020-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多