如何根据用户输入条件生成奇数

  • 本文关键字:条件 何根 用户 java
  • 更新时间 :
  • 英文 :


应用程序应该打印第一个n奇数,其中n在1到25之间,从start开始。start介于100和200之间,它表示奇数序列应该从哪里开始。如果start是偶数,那么序列应该从下一个奇数开始。

以下是n = 4start = 193的示例:

193, 195, 197, 199

应用程序必须允许用户输入nstart的值。然后,它必须验证n在1到25之间,start在100到200之间。

我的代码:

public static void main(String[] args) {

Scanner sc= new Scanner(System.in);
int n = sc.nextInt();

Scanner sc2= new Scanner(System.in);
int start = sc2.nextInt();

for (int i=start; i=n; i=start+1+=2)
if ((n>=1) && (n<=25)) {
System.out.println("Valid Input!");
}
else 
System.out.println ("Invalid Input!!!");

if ((start>=100) && (start<=200)){
System.out.println ("Valid Input!");      
}
else 
System.out.println("Invalid Input!!!");
if (start%2==0) {
System.out.println ("Even Number Inputted! Next Odd Number displayed.");
}       
} 

它一直告诉我int不能转换为boolean。我明白它的意思,只是不知道如何改正。

首先,提示输入值

int minN = 1;
int maxN = 25;
int minStart = 100;
int maxStart = 200;
int start = getInput("Please enter starting value: ", minStart, maxStart);
int n = getInput("Please enter number of odd numbers to print: ", minN, maxN);

现在计算并打印start = 190和n = 4的结果

for (int i = start | 1; i <= maxStart && n-- > 0; i += 2) {
System.out.println(i);
}

打印

191
193
195
197

首先,使用一个方法提示用户输入。

  • start-用户选择的起始点
  • n-生成的值的数量也由用户选择

然后使用循环生成值。首先,通过将低阶位设置为1来确保起始为odd。如果该值已经是奇数,则不会产生任何影响。循环从start的第一个奇数开始,按2递增。当i超过maxStartn达到0时,循环终止。

prompt方法接受适合于输入类型的提示消息。它还接受一个范围,以便在选择超出范围时提供有用的提示。只要用户输入超出范围的值,该方法就会一直提示。否则,返回可接受的值。

static Scanner input = new Scanner(System.in);
public static int getInput(String prompt, int min, int max) {
int value;
while (true) {
System.out.print(prompt);
if ((value = input.nextInt()) >= min && value <= max) {
break;
}
System.out.printf(
"Invalid entry, must be between %d and %d inclusive", min, max);
}
return value;
}

您只需要一个Scanner。您应该在显示循环之前执行输入验证。并且您的for循环语法不正确,第二部分应该解析为boolean测试(而不是赋值),i=start+1+=2就是错误的。修复它可能看起来像

Scanner sc = new Scanner(System.in);
int n;
do {
System.out.println("Print how many odd numbers (n)? Enter a value between 1 and 25.");
n = sc.nextInt();
} while (n < 1 || n > 25);
int start;
do {
System.out.println("Enter starting value? Enter a value between 100 and 200.");
start = sc.nextInt();
} while (start < 100 || start > 200);
if (start % 2 != 1) {
System.out.println("Even Number Inputted! Next Odd Number displayed.");
start++;
}
for (int i = start; i < start + (2 * n); i += 2) {
System.out.println(i);
}

问题出在for循环条件中,您必须将i=n更改为i<=n

这是我第一次发这样的帖子。

我相信你得到int cannot be converted to boolean的原因是因为在你的for循环中,第二个语句是i=n。for循环的这条语句需要是一个逻辑块。

我坚信提供资源比提供答案更重要,所以请查看w3schools(顺便说一句,杀手级资源)关于java for循环的文章:https://www.w3schools.com/java/java_for_loop.asp

我认为问题是条件部分的for循环,i不能像i=n一样等于n。你可以修改i<=n

最新更新