Java for循环未执行

问题描述 投票:0回答:4

你看到的第一个for-loop没有执行,我不知道为什么。它被完全忽略了,我在一个单独的方法中尝试了它并且我在main方法中尝试了但是似乎忽略了一些但是我不确定如何让它运行,它只是转到下一个方法运行在main方法。

package math;
import java.util.Scanner;


public class mathAverageValue {

    static int numOfVals;
    static double total;
    static double average;
    static double[] arr = new double[numOfVals];
    static String boole;

    public static void input() {
        Scanner s = new Scanner(System.in);
        System.out.println("How many values will be averaged ? : ");
        numOfVals = s.nextInt();
        for(int i=0; i<arr.length; i++){
                System.out.print("Enter Element No."+(i+1)+": ");
                arr[i] = s.nextDouble();
        }
    }


    public static void process() {
        for (int i=0; i < arr.length; i++) {
            total = total + arr[i];
        }

        average = total / arr.length;   
    }

    public static void output() {

        System.out.println("Your average is : " + average);

        System.out.println("Would you like to average again? Y or N : ");
        Scanner i = new Scanner(System.in);
        boole = i.next();

        if ("Y".equals(boole)) {
            input();
            output();
        }
    }

    public static void main(String[] args) {
        input();
        output();
    }

}
java loops for-loop
4个回答
0
投票

问题是你已经为numOfVals分配了一个值,然后以错误的顺序创建了数组。

public static void input() {
    Scanner s = new Scanner(System.in);
    System.out.println("How many values will be averaged ? : ");
    numOfVals = s.nextInt();
    arr = new double[numOfVals];       // <-- PUT THIS HERE
    for(int i=0; i<arr.length; i++){
            System.out.print("Enter Element No."+(i+1)+": ");
            arr[i] = s.nextDouble();
    }
}

2
投票

static int numOfVals分配一些值。 Java默认情况下将0分配给它。因此你的for循环永远不会运行。同样修改你的数组声明如下: -

 static double arr = new double[numOfVals];

0
投票

它被忽略,因为它是一个零长度数组:

static int numOfVals;  // This implicitly equals 0.
static double total;
static double average;
static double[] arr = new double[numOfVals]; // so this has no elements.

于是

    for(int i=0; i<arr.length; i++){   //arr.length is 0
            System.out.print("Enter Element No."+(i+1)+": ");
            arr[i] = s.nextDouble();
    }

不迭代


0
投票

根据java原始数据类型初始化,所有类型都有一个默认值。在您的情况下,static int numOfVals将被赋值为0.这就是为什么忽略for循环的原因。见https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

© www.soinside.com 2019 - 2024. All rights reserved.