获取数组中项目产品的错误

时间:2014-04-19 18:30:15

标签: java arrays

我想从控制台获取输入并使用数字执行计算。当我从控制台收到一些ref值,例如" 10"(在这种情况下)时,我想停止接收数组到数组中。一旦我在控制台中输入10,阵列就必须结束,并且数组中的值必须相乘。我已经尝试过将其作为一个程序,但是对于正在执行的产品,我得到的是0。

     public class Scrap {
    private static int i;
    private static double[] as;

    public static void main(String[] args) 
    {
        as=new double[100];
        for(i=0;i<as.length;i++)
        {

            as[i]=dscan();
            if(as[i]==10)
                break;
        }
        double d=1;
        for(i=0;i<as.length;i++)
        {

            d=d*as[i];
        }
        System.out.println("Product is :"+(d/10));
    }

    public static double dscan()
    {
    System.out.print(" : ");
    return new Scanner(System.in).nextDouble();
    }   

}

2 个答案:

答案 0 :(得分:0)

这段代码有效......我改进了它使用List而不是数组,因为一开始你不知道你会有多少输入...如果你什么都不懂,只要问......

   public class Scrap {
        private static int i;

    private static ArrayList<Double> al = new ArrayList<Double>();

    public static void main(String[] args) {
        while (true) {
            double d = dscan();
            if (d != 10) {
                al.add(d);
            }else{
                break;
            }
        }
        double d = 1;
        for (i = 0; i < al.size(); i++) {
            d = d * al.get(i);
        }
        System.out.println("Product is :" + (d / 10));
    }

    public static double dscan() {
        System.out.print(" : ");
        return new Scanner(System.in).nextDouble();
    }

}

答案 1 :(得分:0)

在你的情况下as=new double[100];将使用100个零初始化数组(原始double的默认值)和as.length将始终返回100(初始化数组的大小)而不是有效元素的数量,因此如果输入少于100个值,则其余值将保留为零,这将用于乘法..

要使其工作,您需要计算单独变量中有效元素的数量,然后使用它来限制数组窗口或Matej sugest使用动态大小的集合。