我必须写一个主程序,询问用户10到20之间的数字,并打印出该数字和50之间的偶数。如果数字不在10和20范围内,包括在内,程序将继续提示用户有效号码。
到目前为止,这就是我所拥有的
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// write your code here
Scanner keyboard = new Scanner(System.in);
System.out.println("Please choose a number between 10 and 20! ");
int number = keyboard.nextInt();
int newnumber = number;
while (number <= 10 || number >= 20) {
System.out.print("No, between 10 and 20: ");
System.out.println("Please choose a number between 10 and 20! ");
number = keyboard.nextInt();
}
while (number >= 10 || number <= 20) {
int limit = 50;
for (int i= 10; newnumber <= 50; i++) {
if (i% 2 == 0) {
System.out.println(newnumber);
newnumber=newnumber+2;
}
}
}
}
}
与您的问题无关,但是您的第一个while循环将阻止用户输入10或20,因为while循环会一直检查输入是否等于这两个。
你的第二个while循环没有做太多,并且作为if语句更有意义 - 如果你还没有确认它在你的第一个while循环中的范围内。
现在你的实际问题是你开始你的计数器作为i
但增加newnumber
。即使你增加i
,它仍然永远不会适用于赔率,因为你的起始数字是奇数,你增加2.你的两个选项是
使用第一个选项
while (number < 10 || number > 20) {
System.out.print("No, between 10 and 20: ");
System.out.println("Please choose a number between 10 and 20! ");
number = keyboard.nextInt();
}
for (int i = (number % 2 == 0 ? number : number+1); i <= 50; i+=2) {
System.out.println(newnumber);
}
请注意,我放弃检查每次迭代是否均匀,因为我确保以偶数开始并以2递增。