java 在数组中输入浮点数,然后将它们相加

qlzsbp2j  于 2023-03-28  发布在  Java
关注(0)|答案(2)|浏览(155)

对于我的CS类中的作业,我必须接受浮点数的输入,将它们保存在数组中,然后显示它们并将它们加在一起以获得浮点数的总和。目前我在获得浮点数的总和方面遇到了问题。
下面的代码应该可以工作,但是我得到了一个错误:“无法添加对象和int”。
我的代码是:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner; // load the scanner utility

class Lab7 {

    public static void main(String[] args) {

        double n;
        double s;
        Scanner input = new Scanner( System.in );  //define the scanner

        List L = new ArrayList();
        s=0.0;
        n=1.0;
        // read in the floats
        while ( n != 0.0 )
          {
             System.out.println("Please input a number");
             n = input.nextFloat();
             if ( n != 0.0) L.add(n);
             System.out.println("read in " + n);

          }

        for (int i=0; i< L.size(); i= i+1)
         {
           System.out.println("List contains " + L.get(i));
           s = s + L.get(i);
           System.outprintln("Sum of nunbers " + s); 
         }


     }// of main

   } // of Lab7
5ktev3wc

5ktev3wc1#

System.outprintln("Sum of nunbers " + sum);

应该是

System.out.println("Sum of numbers " + sum);
jv4diomz

jv4diomz2#

我已经修复了代码并将新版本放在下面。
主要问题是你使用ArrayList的方式。你使用的是所谓的“原始类型”。请参阅此链接了解为什么这是坏的信息:What is a raw type and why shouldn't we use it?。基本上,您应该为ArrayList提供一个类型参数,如:ArrayList<String> .
然而,在这种情况下,甚至不需要List。我们可以简单地在每个新数字输入时保持总和的运行总数。我更改了代码来实现这一点。
我还重命名了你的变量。你不应该命名像nx这样的东西。命名变量时要描述它们的用途。这会让你或你寻求帮助的人更容易(就像StackOverflow上的人一样)阅读你的代码。让你的代码容易理解几乎和让它正确工作一样重要,尤其是当你开始做更大的项目时。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner; // load the scanner utility

class Lab7 {

    public static void main(String[] args) {

        double currentNumber = 1.0;
        double sum = 0.0;
        Scanner input = new Scanner( System.in );  //define the scanner

        // read in the floats
        while ( currentNumber != 0.0 )
        {
            System.out.println("Please input a number");
            currentNumber = input.nextFloat();
            System.out.println("read in " + currentNumber);
            sum = sum + currentNumber;
        }
        System.outprintln("Sum of nunbers " + sum); 

    }// of main

} // of Lab7

如果你绝对必须在这个实验中使用数组(请记住,无论如何都不需要它,这样做的唯一原因是如果实验明确地说你必须这样做),你可以使用以下方法:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner; // load the scanner utility

class Lab7 {

    public static void main(String[] args) {

        double currentNumber = 1.0;
        double sum = 0.0;
        Scanner input = new Scanner( System.in );  //define the scanner
        ArrayList<Float> floats = new ArrayList<>(); //notice how we give a type argument

        // read in the floats
        while ( currentNumber != 0.0 )
        {
            System.out.println("Please input a number");
            currentNumber = input.nextFloat();
            System.out.println("read in " + currentNumber);
            floats.add((float) currentNumber);
            sum = sum + currentNumber;
        }
        System.outprintln("Sum of nunbers " + sum); 

    }// of main

} // of Lab7

相关问题