Java 使用while两次?
我对学校的java代码有一个顾虑和问题。 我必须做三个部分: A-将用户输入设为一个数字,读取它,使用布尔值验证它是正的还是负的,然后必须进行检查,然后只接受介于20和100之间的值。如果没有,程序必须循环请求接受的号码 B-列出0和插入的数字之间的奇数,并将它们相加 C-制作并运行A和B部分后,必须输入对程序的必要修改,重复两次以输入限值,并显示其奇数和总和。也就是说,这些部分将重复两次A+B。 必须使用do while类型结构来控制它。(复制/粘贴) 以下是我目前得到的信息:Java 使用while两次?,java,Java,我对学校的java代码有一个顾虑和问题。 我必须做三个部分: A-将用户输入设为一个数字,读取它,使用布尔值验证它是正的还是负的,然后必须进行检查,然后只接受介于20和100之间的值。如果没有,程序必须循环请求接受的号码 B-列出0和插入的数字之间的奇数,并将它们相加 C-制作并运行A和B部分后,必须输入对程序的必要修改,重复两次以输入限值,并显示其奇数和总和。也就是说,这些部分将重复两次A+B。 必须使用do while类型结构来控制它。(复制/粘贴) 以下是我目前得到的信息: import
import java.util.Scanner;
public class School_Proj1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
boolean positive = false;
int sum = 0;
do {
System.out.print("Input a number: ");
number = scanner.nextInt();
scanner.nextLine();
} while(!positive && (number <20) || (number>100));
System.out.println("Number input OK [ "+number+" ]"
+ "\n\nLet's go to the next phase!\n\n"
+ "The odd numbers until [ "+number+" ] are: ");
for(int i=0; i <= number; i++){
if (i%2 !=0){
System.out.print(i + " ");
sum = sum + i;
}
}
System.out.println("\nAnd the sum of the odd numbers until [ "+number+" ] are: " + sum);
}
}
import java.util.Scanner;
公立学校项目1{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
整数=0;
布尔正=假;
整数和=0;
做{
系统输出打印(“输入一个数字:”);
编号=scanner.nextInt();
scanner.nextLine();
}而(!正&&(数字100));
System.out.println(“数字输入正常[“+Number+”]””
+“\n\n让我们转到下一阶段!\n\n”
+“[“+number+”]之前的奇数为:”;
对于(inti=0;i您非常接近,只需添加另一个循环并在正确的位置初始化sum
Scanner scanner = new Scanner(System.in);
int number = 0;
int sum;
int entries = 0;
boolean positive;
do
{
sum = 0;
do
{
System.out.print("Input a number: ");
number = scanner.nextInt();
if (number < 0)
{
positive = false;
}
else
{
positive = true;
}
scanner.nextLine();
}
while ((positive == false) || (number < 20) || (number > 100));
System.out.println("Number input OK [ " + number + " ]"
+ "\n\nLet's go to the next phase!\n\n"
+ "The odd numbers until [ " + number + " ] are: ");
for (int i = 0; i <= number; i++)
{
if (i % 2 != 0)
{
System.out.print(i + " ");
sum = sum + i;
}
}
System.out.println("\nAnd the sum of the odd numbers until [ " + number + " ] are: " + sum);
}
while (++entries < 2);
}
Scanner Scanner=新的扫描仪(System.in);
整数=0;
整数和;
整数项=0;
布尔正;
做
{
总和=0;
做
{
系统输出打印(“输入一个数字:”);
编号=scanner.nextInt();
如果(数字<0)
{
阳性=假;
}
其他的
{
正=真;
}
scanner.nextLine();
}
而((正==假)| |(数<20)| |(数>100));
System.out.println(“数字输入正常[“+Number+”]””
+“\n\n让我们转到下一阶段!\n\n”
+“[“+number+”]之前的奇数为:”;
对于(int i=0;i您可以通过以下测试创建boolean
值:
number < 20
甚至
(number < 20) || (number > 100)
(数字<20)| |(数字>100)
这些boolean
表达式可以分配给boolean
变量
因此,您需要:
正=数量>0
正数不做任何事情,因为它只是一个设置为false的变量,它被放在一个条件语句中进行检查
!false
,但它始终是真的!事实上,您正在检查!false==true,并且它始终是真的
这里不需要使用布尔值,put
number <20 || number>100
100号
在短期内,这是足够的
对于c部分,在“包装”代码的同时添加do,使用整数进行计数,直到达到两个周期
cycle = 0;
do {
cycle++;
// your previous code
} while (cycle < 2);
cycle=0;
做{
循环++;
//您以前的代码
}而(周期<2);
布尔正数没有做任何事情,因为它从未更改过,因为(!正数…)前半部分将始终为真。
此外,A问题有点令人困惑:如果它在20到100之间,它必须是正的,那么为什么要检查+或-?将其更改为这可能会起作用
import java.util.Scanner;
public class School_Proj1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
boolean positive = false;
int sum = 0;
int count = 0
do{
do {
System.out.print("Input a number: ");
number = scanner.nextInt();
positive = (number > 0)? true:false;
} while(positive && !(number <= 20) || (number >= 100));
System.out.println("Number input OK [ "+number+" ]"
+ "\n\nLet's go to the next phase!\n\n"
+ "The odd numbers until [ "+number+" ] are: ");
for(int i=0; i <= number; i++){
if (i%2 !=0){
System.out.print(i + " ");
sum = sum + i;
}
}
System.out.println("\nAnd the sum of the odd numbers until [ "+number+" ] are: " + sum);
}while(++count <= 2);
}
import java.util.Scanner;
公立学校项目1{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
整数=0;
布尔正=假;
整数和=0;
整数计数=0
做{
做{
系统输出打印(“输入一个数字:”);
编号=scanner.nextInt();
正=(数字>0)?真:假;
}而(正数&!(数=100));
System.out.println(“数字输入正常[“+Number+”]””
+“\n\n让我们转到下一阶段!\n\n”
+“[“+number+”]之前的奇数为:”;
因为(int i=0;i)你的布尔值正数
实际上什么都不做。你从来没有给它赋值(除了假的初始值以外)。我害怕这一点,但想弄错:)哦,我有点接近了。我期待着更复杂的事情:-)谢谢!你能不能也给我介绍一下布尔值?好像我把它放在了错误的地方。:-sI会简化代码,你只需要确保有人输入一个正值。最好的代码很容易阅读。我会进行编辑。我现在正在测试代码,你发布的代码工作了,但是在正数=0;之后。
@Andrej编辑它失败。它开始接受任何数字(>20 |再试一次,我在while循环的退出逻辑中有一个错误,我认为它会产生预期的效果。如果它起作用,请向上投票。我需要分数!我完全同意代码,但我们丢失了布尔变量,在语句中,他们要求我使用它。我将复制/粘贴语句:以控制输入的值是否为co不管正确与否,您必须定义一个布尔变量并在计算时对其求值。
import java.util.Scanner;
public class School_Proj1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
boolean positive = false;
int sum = 0;
int count = 0
do{
do {
System.out.print("Input a number: ");
number = scanner.nextInt();
positive = (number > 0)? true:false;
} while(positive && !(number <= 20) || (number >= 100));
System.out.println("Number input OK [ "+number+" ]"
+ "\n\nLet's go to the next phase!\n\n"
+ "The odd numbers until [ "+number+" ] are: ");
for(int i=0; i <= number; i++){
if (i%2 !=0){
System.out.print(i + " ");
sum = sum + i;
}
}
System.out.println("\nAnd the sum of the odd numbers until [ "+number+" ] are: " + sum);
}while(++count <= 2);
}