Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用while两次?_Java - Fatal编程技术网

Java 使用while两次?

Java 使用while两次?,java,Java,我对学校的java代码有一个顾虑和问题。 我必须做三个部分: A-将用户输入设为一个数字,读取它,使用布尔值验证它是正的还是负的,然后必须进行检查,然后只接受介于20和100之间的值。如果没有,程序必须循环请求接受的号码 B-列出0和插入的数字之间的奇数,并将它们相加 C-制作并运行A和B部分后,必须输入对程序的必要修改,重复两次以输入限值,并显示其奇数和总和。也就是说,这些部分将重复两次A+B。 必须使用do while类型结构来控制它。(复制/粘贴) 以下是我目前得到的信息: import

我对学校的java代码有一个顾虑和问题。 我必须做三个部分:

A-将用户输入设为一个数字,读取它,使用布尔值验证它是正的还是负的,然后必须进行检查,然后只接受介于20和100之间的值。如果没有,程序必须循环请求接受的号码

B-列出0和插入的数字之间的奇数,并将它们相加

C-制作并运行A和B部分后,必须输入对程序的必要修改,重复两次以输入限值,并显示其奇数和总和。也就是说,这些部分将重复两次A+B。 必须使用do while类型结构来控制它。(复制/粘贴)

以下是我目前得到的信息:

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);
}