gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:35 25 4
gpt4 key购买 nike

我的任务是使用哨兵控制的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com