我必须编写一个主程序,要求用户输入一个介于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;
}
}
}
}
}
发布于 2019-03-13 06:30:35
与您的问题无关,但是您的第一个while循环将阻止用户输入10或20,因为while循环不断检查输入是否等于这两个值。
第二个while循环没有做太多事情,作为if语句会更有意义-如果您还没有在第一个while循环中验证它在范围内的话。
现在您的实际问题是,您以i
启动计数器,但递增newnumber
。即使您递增i
,它仍然不会对赔率起作用,因为您的起始数是奇数,并且递增2。
除非number是奇数,否则每次迭代都会将循环计数器number+1
使用第一个选项
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为增量。
https://stackoverflow.com/questions/55131388
复制相似问题