Java 程序在输出中重复输入项
程序代码正常工作,但输出会重复一些 投入。我似乎不明白为什么它会重复第一个条目和最后一个条目Java 程序在输出中重复输入项,java,Java,程序代码正常工作,但输出会重复一些 投入。我似乎不明白为什么它会重复第一个条目和最后一个条目 import java.util.Scanner; public class ArraySum { public static void main(String[] args) { Scanner scnr = new Scanner(System.in); final int NUM_ELEMENTS = 8; // Number of
import java.util.Scanner;
public class ArraySum {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
final int NUM_ELEMENTS = 8; // Number of elements
int[] userVals = new int[NUM_ELEMENTS]; // User input
int i = 0; // Loop index
int greaterVal = 0; // Find greater #'s than 21
// Prompt user to populate array
System.out.println("Enter " + NUM_ELEMENTS + " integer values...");
for (i = 0; i < NUM_ELEMENTS; ++i) {
System.out.println("Value: ");
userVals[i] = scnr.nextInt();
}
// Determine #'s greater than 21
int greaterVal = userVals[0];
System.out.print("#'s greater than 21 are: ");
for (i = 0; i < NUM_ELEMENTS; ++i) {
if (userVals[i] >= 21) {
greaterVal = userVals[i];
}
// Code is supposed to only display #'s greater than 21 once
System.out.print(" " + greaterVal + " ");
}
return;
}
}
import java.util.Scanner;
公共类数组{
公共静态void main(字符串[]args){
扫描仪scnr=新扫描仪(System.in);
final int NUM_ELEMENTS=8;//元素数
int[]userVals=newint[NUM_元素];//用户输入
int i=0;//循环索引
int greaterVal=0;//查找大于21的#
//提示用户填充数组
System.out.println(“输入”+NUM_元素+“整数值…”);
对于(i=0;i=21){
greaterVal=userVals[i];
}
//代码应该只显示一次大于21的#
系统输出打印(“+greaterVal+”);
}
返回;
}
}
用于(i=0;i=21){
greaterVal=userVals[i];
}
//代码应该只显示一次大于21的#
系统输出打印(“+greaterVal+”);
}
格式设置非常糟糕,此片段不正确。您应该立即打印值,而不是保存以备将来使用。这是因为您提到了
System.out.print(“+greaterVal+”)代码>条件的外侧如果(userVals[i]>=21)
,这就是为什么如果循环中的当前值小于21,并且如果上一个值大于greaterVal变量保持的21值,则它将再次打印上一个值。
更新你的代码
for (i = 0; i < NUM_ELEMENTS; ++i) {
if (userVals[i] >= 21) {
greaterVal = userVals[i];
// Code is supposed to only display #'s greater than 21 once
System.out.print(" " + greaterVal + " ");
}
}
用于(i=0;i=21){
greaterVal=userVals[i];
//代码应该只显示一次大于21的#
系统输出打印(“+greaterVal+”);
}
}
另外,如果您只需要打印大于21的值,那么您不需要greaterVal变量,您只需要这个
for (i = 0; i < NUM_ELEMENTS; ++i) {
if (userVals[i] >= 21) {
// Code is supposed to only display #'s greater than 21 once
System.out.print( " "+ userVals[i] + " ");
}
}
用于(i=0;i=21){
//代码应该只显示一次大于21的#
System.out.print(“+userVals[i]+”);
}
}
您得到了什么样的输出?您期望/想要什么样的输出?另外,请提供有关输出的输入。看起来您是在要求我们为您调试代码。这类问题对其他浏览网站的人没有帮助,除非您指定了代码的特定部分,该部分无法按预期工作。您可以使用这些来创建一个@Jérôme。我已经查看了每个编译警告,但它仍然显示相同的内容。很抱歉,这没有帮助,我们将继续使用代码以获得正确的输出。我用了3,2,230,258,234,73,27,-2,然后我得到了3,2,230,258,234,73,27,我在移动打印声明的过程中进行了反复尝试,并且得出了你在回答中建议的正确答案。。。。格雷西丝,明白了:)@borowis
for (i = 0; i < NUM_ELEMENTS; ++i) {
if (userVals[i] >= 21) {
// Code is supposed to only display #'s greater than 21 once
System.out.print( " "+ userVals[i] + " ");
}
}