应用程序应该打印第一个n
奇数,其中n
在1到25之间,从start
开始。start
介于100和200之间,它表示奇数序列应该从哪里开始。如果start
是偶数,那么序列应该从下一个奇数开始。
以下是n = 4
和start = 193
的示例:
193, 195, 197, 199
应用程序必须允许用户输入n
和start
的值。然后,它必须验证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
超过maxStart
或n
达到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