Java 求偶数和偶数最大值
我试图从用户输入的数字中找到偶数和偶数最大值。例如,如果他们用4回答“多少个整数?”并输入整数:2、9、18、4,则应输出:Java 求偶数和偶数最大值,java,algorithm,sum,max,java.util.scanner,Java,Algorithm,Sum,Max,Java.util.scanner,我试图从用户输入的数字中找到偶数和偶数最大值。例如,如果他们用4回答“多少个整数?”并输入整数:2、9、18、4,则应输出: how many integers? 4 next integer? 2 next integer? 9 next integer? 18 next integer? 4 even sum = 24 even max = 18 这是我的密码: public static void evenSum(){ //prompt the user to e
how many integers? 4
next integer? 2
next integer? 9
next integer? 18
next integer? 4
even sum = 24
even max = 18
这是我的密码:
public static void evenSum(){
//prompt the user to enter the amount of integers
Scanner console = new Scanner(System.in);
System.out.print("how many integers? ");
int numbers = console.nextInt();
//prompt user to enter the first integer
System.out.print("next integer? ");
int firstNum = console.nextInt();
//set the even max to the firstNum
int evenMax = firstNum;
//set the evenSum to zero
int evenSum = 0;
//for loop for the number of times to ask user to input numbers
for (int i = 2; i <= numbers; i++) {
System.out.print("next integer? ");
int num = console.nextInt();
//check to see if the first number is even
if (firstNum % 2 == 0){
//if it is even then add it to the evenSum
evenSum += firstNum;
}
//check to see if the numbers entered are even
if (num % 2 == 0) {
//if they are even add them to the evenSum
evenSum += num;
}
//check to see if the number entered is bigger than the first number
if (num > firstNum) {
if (num % 2 == 0 ) {
evenMax = num;
}
}
}
System.out.println("even sum = " +evenSum);
System.out.println("even max = " +evenMax);
}
有人能帮我找出问题所在吗?将for循环中的以下代码移到for循环之前-
if (firstNum % 2 == 0){
//if it is even then add it to the evenSum
evenSum += firstNum;
}
这将防止重复添加您还需要的偶数和中的第一个数字
if (num > evenMax) {
if (num % 2 == 0 ) {
evenMax = num;
}
}
或者,或者
if (num > evenMax && num % 2 == 0) {
evenMax = num;
}
在您的场景中,
firstNum
是2,因此它后面的每个数字在技术上都更大,因此(理论上)您将不会得到在第一个数字之后输入的最大偶数。或者将for循环内的第一个if条件向上移动(for循环外)
或在处理之前将所有用户输入存储在数据结构(即数组)中。
将它们存储在数组中可以更容易地操作数据 您在做一些非常奇怪的事情,第一次输入一个数字时,它被视为特殊的。这导致输入的第一个偶数(本例中为2)被多次添加到总数中 将所有输入放在同一个循环中,这样您就可以平等地对待所有内容:
public static void evenSum(){
//prompt the user to enter the amount of integers
Scanner console = new Scanner(System.in);
System.out.print("how many integers? ");
int numbers = console.nextInt();
int evenSum = 0;
int evenMax = 0;
//for loop for the number of times to ask user to input numbers
for (int i = 0; i < numbers; i++) {
//input new number
System.out.print("next integer? ");
int num = console.nextInt();
//check to see if the number is even. if it is not even,
//we don't care about it at all and just go to the next one
if (num % 2 == 0){
//add it to the sum
evenSum += num;
//if it's larger than the maximum, set the new maximum
if (num > evenMax) {
evenMax = num;
}
}
}
System.out.println("even sum = " +evenSum);
System.out.println("even max = " +evenMax);
}
公共静态void evenSum(){
//提示用户输入整数的数量
扫描仪控制台=新扫描仪(System.in);
System.out.print(“多少个整数?”);
int numbers=console.nextInt();
int evenSum=0;
int-evenMax=0;
//for循环要求用户输入数字的次数
对于(int i=0;ievenMax){
evenMax=num;
}
}
}
System.out.println(“偶数和=”+evenSum);
System.out.println(“偶数max=“+evenMax”);
}
如您所见,此代码也只检查一个数字是否为偶数。无需在每次使用时持续检查num
是否为偶数:其值在循环单次运行期间没有变化。工作代码:-
Scanner console = new Scanner(System.in);
int numbers =0, firstNum =0, num =0 ;
System.out.print("how many integers? ");
numbers = console.nextInt();
System.out.print("next integer? ");
firstNum = console.nextInt();
int evenMax = 0;
int evenSum = 0;
if(firstNum%2==0)
{
evenSum = firstNum;
evenMax = firstNum;
}
for (int i = 1; i < numbers; i++) {
System.out.print("next integer? ");
num = console.nextInt();
if (num % 2 == 0) {
//don't add firstNum multiple times to the evenSum, earlier it was added every time you entered an even number
evenSum += num;
//check if the number you entered, i.e. num greater than the already existing greatest number i.e. evenMax and if so update it
evenMax = num > evenMax: num?evenMax;
}
}
System.out.println("even sum = " +evenSum);
System.out.println("even max = " +evenMax);
}
扫描仪控制台=新扫描仪(System.in);
整数=0,firstNum=0,num=0;
System.out.print(“多少个整数?”);
numbers=console.nextInt();
System.out.print(“下一个整数?”);
firstNum=console.nextInt();
int-evenMax=0;
int evenSum=0;
如果(firstNum%2==0)
{
evenSum=firstNum;
evenMax=firstNum;
}
对于(int i=1;ievenMax:num?evenMax;
}
}
System.out.println(“偶数和=”+evenSum);
System.out.println(“偶数max=“+evenMax”);
}
希望这有帮助。代码中有三个主要问题:-
请检查答案是否正确,如果您觉得有用,请进行投票。在for循环中,如果
firstNum
为偶数,则在每次迭代时将firstNum
添加到evenNum
。将if(firstNum%2==0){evenSum+=firstNum;}
移动到循环之外。要更快地获得更好的帮助,请发布一个。关注“short”之后的部分。为什么对第一个值的处理如此不同?我不认为有任何理由处理第一个值与后面的值有任何不同。我注意到这几乎都是正确的,除了evenSum+=firstNum需要是evenSum+=num。谢谢!看来我留错线了。很好的捕获,编辑修复。“在foor循环内部向上(for循环外部)”?我不知道这是什么意思。我的意思是将for循环中的第一个if条件移动到for循环之外。是不是太难理解,先生?我想那个给我答案的人说得很清楚,Lysee,我还是不能100%地说出你在说什么。在发布答案时,语法、标点符号和清晰度非常重要。
Scanner console = new Scanner(System.in);
int numbers =0, firstNum =0, num =0 ;
System.out.print("how many integers? ");
numbers = console.nextInt();
System.out.print("next integer? ");
firstNum = console.nextInt();
int evenMax = 0;
int evenSum = 0;
if(firstNum%2==0)
{
evenSum = firstNum;
evenMax = firstNum;
}
for (int i = 1; i < numbers; i++) {
System.out.print("next integer? ");
num = console.nextInt();
if (num % 2 == 0) {
//don't add firstNum multiple times to the evenSum, earlier it was added every time you entered an even number
evenSum += num;
//check if the number you entered, i.e. num greater than the already existing greatest number i.e. evenMax and if so update it
evenMax = num > evenMax: num?evenMax;
}
}
System.out.println("even sum = " +evenSum);
System.out.println("even max = " +evenMax);
}