我必须编写一个主程序,要求用户输入10到20之间的数字,并打印出该数字到50之间的偶数。如果该数字不在10到20范围内(包括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;
}
}
}
}
}
答案 0 :(得分:0)
与您的问题无关,但是您的第一个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递增,所以我退出了每次迭代是否为偶数的检查。