Java Array.sort仅返回0个值。阵列大小正确,且阵列已完全填充
很抱歉又出现了一条这样的帖子,但我正在通读外面的内容,什么也没有回答我的问题。我有一些非常基本的代码,只需要输入5个值,对它们进行排序,然后用中间的3个值进行计算,最后输出一些东西。不难,但出于某种原因,my Array.sort只返回值0。我非常确定数组中的所有点在排序之前都已填充,并且我的数组大小正确。建议Java Array.sort仅返回0个值。阵列大小正确,且阵列已完全填充,java,arrays,eclipse,Java,Arrays,Eclipse,很抱歉又出现了一条这样的帖子,但我正在通读外面的内容,什么也没有回答我的问题。我有一些非常基本的代码,只需要输入5个值,对它们进行排序,然后用中间的3个值进行计算,最后输出一些东西。不难,但出于某种原因,my Array.sort只返回值0。我非常确定数组中的所有点在排序之前都已填充,并且我的数组大小正确。建议 import java.util.*; import java.util.Arrays; public class practice { public sta
import java.util.*;
import java.util.Arrays;
public class practice {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int[] finals = new int[3];
int[] scores = new int[5];
int difficulty = 0;
for (int x = 0; x < 3; x++) {
System.out.println("Please input the scores for diver " + (x + 1));
for (int y = 0; y < 5; y++) {
scores[x] = scanner.nextInt();
System.out.println(scores[x]);
}
Arrays.sort(scores);
for (int j = 0; j < 5; j++) {
System.out.println(scores[x]);
}
System.out.println("Please input the difficult of diver " + (x + 1));
difficulty = scanner.nextInt();
finals[x] = (((scores[1] * scores[2] * scores[3]) / 3) * difficulty);
System.out.println(finals[x]);
}
winner(finals);
}
public static void winner(int[] finals) {
System.out.println(finals[0]);
if (finals[0] > finals[2] && finals[0] > finals[1]) {
System.out.println("Diver 1 is the winner of the olympics with a score of " + finals[0]);
} else if (finals[1] > finals[2] && finals[1] > finals[0]) {
System.out.println("Diver 2 is the winner of the olympics with a score of " + finals[1]);
} else if (finals[2] > finals[0] && finals[2] > finals[1]) {
System.out.println("Diver 3 is the winner of the olympics with a score of " + finals[2]);
} else {
System.out.println("There was a tie");
}
}
}
import java.util.*;
导入java.util.array;
公共课堂实践{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
扫描仪=新的扫描仪(System.in);
int[]决赛=新int[3];
int[]分数=新的int[5];
智力难度=0;
对于(int x=0;x<3;x++){
System.out.println(“请输入潜水员的分数”+(x+1));
对于(int y=0;y<5;y++){
分数[x]=scanner.nextInt();
System.out.println(分数[x]);
}
数组。排序(分数);
对于(int j=0;j<5;j++){
System.out.println(分数[x]);
}
System.out.println(“请输入潜水员难度”+(x+1));
难度=scanner.nextInt();
期末考试[x]=((分数[1]*分数[2]*分数[3])/3)*难度);
System.out.println(期末[x]);
}
优胜者(决赛);
}
公开静态无效获胜者(int[]决赛){
System.out.println(期末[0]);
如果(决赛[0]>决赛[2]&决赛[0]>决赛[1]){
System.out.println(“跳水运动员1以“+决赛[0])的成绩获得奥运会冠军;
}else if(决赛[1]>决赛[2]&决赛[1]>决赛[0]){
System.out.println(“跳水运动员2以“+决赛[1])的成绩获得奥运会冠军;
}else if(决赛[2]>决赛[0]&决赛[2]>决赛[1]){
System.out.println(“跳水运动员3以“+决赛[2])的成绩获得奥运会冠军;
}否则{
System.out.println(“有一个平局”);
}
}
}
这个
for (int y = 0; y < 5; y++) {
scores[x] = scanner.nextInt();
System.out.println(scores[x]);
}
for(int y=0;y<5;y++){
分数[x]=scanner.nextInt();
System.out.println(分数[x]);
}
应该是
for (int y = 0; y < scores.length; y++) {
scores[y] = scanner.nextInt();
System.out.println(scores[y]);
}
for (int j = 0; j < scores.length; j++) {
System.out.println(scores[j]);
}
for(int y=0;y
不要依赖硬编码长度。并注意正在迭代的变量。你在这里犯了一个非常类似的错误
for (int j = 0; j < 5; j++) {
System.out.println(scores[x]);
}
for(int j=0;j<5;j++){
System.out.println(分数[x]);
}
应该是
for (int y = 0; y < scores.length; y++) {
scores[y] = scanner.nextInt();
System.out.println(scores[y]);
}
for (int j = 0; j < scores.length; j++) {
System.out.println(scores[j]);
}
for(int j=0;j
您的问题有两个方面
在您的for循环中
for (int y = 0; y < 5; y++) {
scores[x] = scanner.nextInt();
System.out.println(scores[x]);
}
for(int y=0;y<5;y++){
分数[x]=scanner.nextInt();
System.out.println(分数[x]);
}
您不断将分数添加到分数数组中的同一空格(在本例中为0)。如果代码中有x,则应为y,以便能够将所有5个分数添加到数组中,如下所示:
for (int y = 0; y < 5; y++) {
scores[y] = scanner.nextInt();
System.out.println(scores[y]);
}
for(int y=0;y<5;y++){
分数[y]=scanner.nextInt();
系统输出打印项次(分数[y]);
}
您在打印此代码中的分数时犯了相同的错误,您再次只打印x,这是来自外部循环的,此时仍然相同(在本例中仍然为0):
for(int j=0;j<5;j++){
System.out.println(分数[x]);
}
此处的代码应为:
for (int j = 0; j < 5; j++) {
System.out.println(scores[j]);
}
for(int j=0;j<5;j++){
System.out.println(分数[j]);
}
这意味着您将循环遍历数组中的所有5个分数
其余的看起来都很好,运行良好
尽管在这两个循环的约束中使用score.length而不是5是最佳实践 问题在于行分数[x]=scanner.nextInt()。在将值读入数组时,是否应该使用“y”作为索引?此外,我建议您使用IDE调试器逐步检查代码并识别缺陷