[英]Java for-loop is not executed
您看到的第一个for循环未执行,我不确定为什么。 它被完全忽略了,我在一个单独的方法中尝试了它,然后在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();
}
}
为static int numOfVals
分配一些值。 Java默认情况下为其分配0
。 因此,您的for循环将永远不会运行。 还可以如下修改数组声明:
static double arr = new double[numOfVals];
它被忽略,因为它是零长度的数组:
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();
}
不迭代
根据java原始数据类型的初始化,所有类型都有一个默认值。 在您的情况下, static int numOfVals
将分配为0。这就是为什么for循环将被忽略的原因。 参见https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
问题是您已经为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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.