【发布时间】:2020-10-07 13:15:41
【问题描述】:
您好,我正在创建一个程序,该程序在 searchMark 方法中具有两个并行数组(studentNum 和成绩),我提示用户也输入他们想要查找的成绩。该程序然后使用二进制搜索来查找该值,然后检查是否有其他学生拥有它。然后在输出屏幕上打印出所有学生编号和他们的成绩。程序/代码将在数组中找到目标的第一个实例后立即结束,我已经包含了我的输出是什么以及输出应该是什么样子的图片。
// Binary Search
int startIndex = 0, endIndex = 0;
int middleIndex;
int shiftPlus = 0;
int shiftMinus = grade.length-1;
int midValue = 0;
while (startIndex <= endIndex) {
middleIndex = (startIndex+endIndex)/2;
if (grade[middleIndex] == target) {
midValue = grade[middleIndex];
System.out.println("student #" + student[middleIndex]
+ " has a correct count of " + target);
break;
}
else if (grade[middleIndex] > target)
endIndex = middleIndex-1;
else if (grade[middleIndex] < target)
startIndex = middleIndex + 1;
}
boolean aboveMid = true, belowMid = true; // for while loops to stop/start
while (shiftPlus <= midValue && aboveMid == true) {
shiftPlus += 1; // starts at 0 and moves 1 up each loop
if(grade[shiftPlus] == target && shiftPlus <= midValue)
{
System.out.println("student #" + student[shiftPlus]
+ " has a correct count of " + target);
}
else
belowMid = false;
}
while (shiftMinus >= midValue && belowMid == true) {
shiftMinus -= 1; // subtract one from end
if(grade[shiftMinus] == target && shiftMinus <= midValue)
{
System.out.println("student #" + student[shiftMinus]
+ " has a correct count of " + target);
}
else
aboveMid = false;
}
}
当我输入除 3 以外的任何数字时,此代码的输出:
您想搜索什么标记? 6 构建成功(总时间:2 秒)
但是,如果我输入数字“3” 您要搜索什么标记? 3 学生 #2 的正确计数为 3 学生 #3 的正确计数是 3
【问题讨论】:
-
很遗憾,我一直无法让它搜索具有相同分数的其他学生。 不幸的是,这不是我们可以帮助解决的问题描述。请参阅minimal reproducible example 并相应地增强您的问题。
-
现在怎么样了?我对这个平台很陌生
-
请不要使用截图。这些应该是你最后的手段。确保您的问题包含您正在使用的输入,以及作为 text 的输出。
-
从现在开始当我有问题时会这样做。谢谢
标签: java arrays matrix netbeans