以下是原始提示:
编写一个循环,将newScores设置为左移一次的oldScores,将元素0复制到结尾。例如:如果oldScores = {10,20,30,40},则newScores = {20,30,40,10}。
注意:这些活动可能会测试具有不同测试值的代码。此活动将执行两个测试,第一个使用4个元素的数组(newScores = {10,20,30,40}),第二个使用1个元素的数组(newScores = {199})。请参见如何使用zyBooks。
另请注意:如果提交的代码尝试访问无效的数组元素,例如4元素数组的newScores [9],则测试可能会生成奇怪的结果。或者测试可能会崩溃并报告"程序结束从未到达",在这种情况下,系统不会打印导致报告消息的测试用例。
这是我的代码:
public class StudentScores {
public static void main (String [] args) {
final int SCORES_SIZE = 4;
int[] oldScores = new int[SCORES_SIZE];
int[] newScores = new int[SCORES_SIZE];
int i = 0;
oldScores[0] = 10;
oldScores[1] = 20;
oldScores[2] = 30;
oldScores[3] = 40;
for (i = 0; i < SCORES_SIZE - 1; i++) {
newScores[3] = oldScores[0];
newScores[i] = oldScores[i + 1];
}
for (i = 0; i < SCORES_SIZE; ++i) {
System.out.print(newScores[i] + " ");
}
System.out.println();
return;
}
}
这是我的输出:
测试oldScores = {10,20,30,40}
您的输出:20 30 40 10
✖测试oldScores = {199}
预期产出:199
您的输出:0
为什么我的第二次输出测试得到0?
答案 0 :(得分:3)
从oldscores
到newscores
的复制for循环绝不会在SCORES_SIZE == 1
的情况下运行,因为SCORES_SIZE - 1 == 0
和0 < 0
立即是假的。
将newScores[SCORES_SIZE - 1] = oldScores[0];
行移到for循环之外:
for (i = 0; i < SCORES_SIZE - 1; i++) {
newScores[i] = oldScores[i + 1];
}
newScores[SCORES_SIZE - 1] = oldScores[0];
答案 1 :(得分:0)
假设您唯一的其他检查是长度为1的数组,只需使用此
即可if(oldscores.length==1)
{newscores[0]=oldscores[0];
System.out.println(newscores[0]);
}
甚至更简单,
if(oldscores.length==1)
{
System.out.println(oldscores[0]);
}