java - 在java中不使用for循环填充一维数组

标签 java arrays loops for-loop

我的任务是使用哨兵控制的 while 循环填充数组(我必须使用 JOptionPane)。

    int score[] = new int [10];
int x = 0;
int size = 0;
x = Integer.parseInt(JOptionPane.showInputDialog("Please enter the score"));

while ( x != -1){
score[size]= x ;
x = Integer.parseInt(JOptionPane.showInputDialog("Please enter the score"));
size++;    

}
System.out.println(score[0]+score[1]+score[2]+score[3]+score[4]);


}

这是我当前的代码,如果我输入:1, 2, 3, 4, 5, -1,则 println 的结果是 15。 你能帮我看看我做了什么吗?我是一个新的java用户。

最佳答案

您的代码只能处理固定数量的分数,即 5 个分数。如果分数低于 5 个,它将给出无意义的结果;如果分数为 6 到 10 个分数,它将给出错误答案;如果分数超过 10 个分数,则会给出 ArrayIndexOutOfBoundsException 异常。因为您使用的是 10 个元素的固定长度数组,并且手动对前 5 个元素求和。您最好使用动态列表来存储用户输入并使用 for 循环来处理求和。

除了这个主要问题之外,处理用户输入的代码重复两次,并且不处理非整数字符串。您应该将该代码放入一个方法中并为其指定一个适当的名称。

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

public class Filling1DArray {

    /**
     * Ask the user to enter an integer
     * @return The integer the user entered or -1 if the input is not an integer
     */
    private static int nextScore() {
        try {
            return Integer.parseInt(JOptionPane.showInputDialog("Please enter the score (or -1 to stop)"));
        } catch (NumberFormatException e) {
            return -1;
        }
    }

    public static void main(String [] args) {

        // Dynamic list to hold the user input
        List<Integer> scores = new ArrayList<>();

        // Get user input until she enters -1 or some non-integer
        int score;
        while ((score = nextScore()) != -1)
            scores.add(score);

        // Compute the sum using stream API
        System.out.println(scores.stream().reduce((a, b)->a+b).orElse(-1));

        // Or a simple ranged-for
        int sum = 0;
        for (int s : scores) sum += s;
        System.out.println(sum);
    }
}

关于java - 在java中不使用for循环填充一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39975603/

相关文章:

Javascript 循环遍历事件内的数组

android - 如何从 mediaplayer Android 获取循环计数

java - Spring Data JPA 子查询

c++ - 连接 2 个数组,一个字符串数组和一个数字数组

javascript - 动态构建二维数组Javascript

c++ - 二维数组中指针衰减后的大小

java linkedhashmap迭代

java - 带有 fragment 的 Android Espresso 功能测试

java - 有什么方法可以强制执行 java 枚举值的合规性吗?

java - 安卓工作室 1.2.2 ClassNotFoundException android.widget.viewstub