Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 程序在输出中重复输入项_Java - Fatal编程技术网

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] + " ");
                }    
            }