Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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_While Loop_Do While - Fatal编程技术网

Java 依次运行两个while循环以获取用户输入

Java 依次运行两个while循环以获取用户输入,java,while-loop,do-while,Java,While Loop,Do While,在我的方法中,我希望用户输入,如果它首先通过,而它需要转到第二个while循环,在第二个while循环中,如果条件失败,它需要重新运行循环,而不是重新运行自己,第一个while正在执行 //Method to read, validate and store postcode and purchase amount for N customers public void addRecord(int customerCounter) throws IOException { int po

在我的方法中,我希望用户输入,如果它首先通过,而它需要转到第二个while循环,在第二个while循环中,如果条件失败,它需要重新运行循环,而不是重新运行自己,第一个while正在执行

//Method to read, validate and store postcode and purchase amount for N customers
public  void addRecord(int customerCounter) throws IOException
{
    int postcode;
    double purchaseAmount;

    int conform =0;

    do{
        BufferedReader breader= new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Postcode: ");
        postcode= Integer.parseInt(breader.readLine());

        if(4121 >postcode)
        {
            System.out.print("Postcode must be greater than 4121");
            System.out.print("Try again: ");                            
        }
        else if(postcode > 4123)
        {
            System.out.print("Postcode must be less than 4123");
            System.out.print("Try again: ");                            
        }
        else
        {
            conform = 1;
            //System.out.println(conform);
        }
    }
    while(4121 >postcode && postcode > 4123);



    if(conform == 1)
    {
        System.out.println(conform);
        do
        {
            BufferedReader breader2= new BufferedReader(new InputStreamReader(System.in));
            breader2= new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Purchase Amount: ");
            purchaseAmount= Double.parseDouble(breader2.readLine());

            if(purchaseAmount < 60)
            {
                System.out.print("Purchase Amount must be greater than $60");
                System.out.print("Try again: ");
                continue;
            }
            else if(purchaseAmount > 500)
            {
                System.out.print("Purchase Amount must be greater than $500");
                System.out.print("Try again: ");                                                
            }           
        }
        while(purchaseAmount < 60 && purchaseAmount > 500);         

    }   

}
//读取、验证和存储N个客户的邮政编码和购买金额的方法
public void addRecord(int customerCounter)引发IOException
{
国际邮政编码;
购买量加倍;
int=0;
做{
BufferedReader breader=新的BufferedReader(新的InputStreamReader(System.in));
系统输出打印(“邮政编码:”);
postcode=Integer.parseInt(breader.readLine());
如果(4121>邮政编码)
{
系统输出打印(“邮政编码必须大于4121”);
System.out.print(“重试:”;
}
其他条件(邮政编码>4123)
{
系统输出打印(“邮政编码必须小于4123”);
System.out.print(“重试:”;
}
其他的
{
一致=1;
//系统输出打印LN(符合);
}
}
而(4121>邮政编码&&postcode>4123);
如果(符合==1)
{
系统输出打印LN(符合);
做
{
BufferedReader breader2=新的BufferedReader(新的InputStreamReader(System.in));
breader2=新的BufferedReader(新的InputStreamReader(System.in));
系统输出打印项次(“采购金额:”);
purchaseAmount=Double.parseDouble(breader2.readLine());
如果(购买量<60)
{
系统输出打印(“购买金额必须大于$60”);
System.out.print(“重试:”;
继续;
}
否则,如果(采购量>500)
{
系统输出打印(“购买金额必须大于500美元”);
System.out.print(“重试:”;
}           
}
而(采购量<60和采购量>500);
}   
}

最好的解决方案是使用两个嵌套的无限循环

通过这种方式,程序只检查每个循环插入的邮政编码和价格的2倍,以确定是否可以继续,而不是在您的解决方案中检查4倍

//Method to read, validate and store postcode and purchase amount for N customers
public  void addRecord(int customerCounter) throws IOException
{
    int postcode;
    double purchaseAmount;

    int conform =0;

    do{
        BufferedReader breader= new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Postcode: ");
        postcode= Integer.parseInt(breader.readLine());

        if(4121 >postcode)
        {
            System.out.print("Postcode must be greater than 4121");
            System.out.print("Try again: ");                            
        }
        else if(postcode > 4123)
        {
            System.out.print("Postcode must be less than 4123");
            System.out.print("Try again: ");                            
        }
        else
        {
            System.out.println(conform);
            do{

                BufferedReader breader2= new BufferedReader(new InputStreamReader(System.in));
                breader2= new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Purchase Amount: ");
                purchaseAmount= Double.parseDouble(breader2.readLine());

                if(purchaseAmount < 60)
                {
                    System.out.print("Purchase Amount must be greater than $60");
                    System.out.print("Try again");
                    continue;
                 }
                 else if(purchaseAmount > 500)
                 {
                     System.out.print("Purchase Amount must be greater than $500");
                     System.out.print("Try again");                                                
                 }else{
                     break;
                 }

             }while(true);
             break;
        }
    }
    while(true);

}
//读取、验证和存储N个客户的邮政编码和购买金额的方法
public void addRecord(int customerCounter)引发IOException
{
国际邮政编码;
购买量加倍;
int=0;
做{
BufferedReader breader=新的BufferedReader(新的InputStreamReader(System.in));
系统输出打印(“邮政编码:”);
postcode=Integer.parseInt(breader.readLine());
如果(4121>邮政编码)
{
系统输出打印(“邮政编码必须大于4121”);
System.out.print(“重试:”;
}
其他条件(邮政编码>4123)
{
系统输出打印(“邮政编码必须小于4123”);
System.out.print(“重试:”;
}
其他的
{
系统输出打印LN(符合);
做{
BufferedReader breader2=新的BufferedReader(新的InputStreamReader(System.in));
breader2=新的BufferedReader(新的InputStreamReader(System.in));
系统输出打印项次(“采购金额:”);
purchaseAmount=Double.parseDouble(breader2.readLine());
如果(购买量<60)
{
系统输出打印(“购买金额必须大于$60”);
系统输出打印(“重试”);
继续;
}
否则,如果(采购量>500)
{
系统输出打印(“购买金额必须大于500美元”);
系统输出打印(“重试”);
}否则{
打破
}
}虽然(正确);
打破
}
}
虽然(正确);
}

您在
中的条件虽然是错误的,但总是错误的

postcode = 5000;
while(postcode < 4121 && postcode > 4123); -> while(false && true); -> false

postcode = 3000;
while(postcode < 4121 && postcode > 4123); -> while(true && false); -> false
postcode=5000;
而(邮政编码<4121&&postcode>4123);->while(假&真);->假的
邮政编码=3000;
而(邮政编码<4121&&postcode>4123);->while(真与假);->假的
使用或代替和

while(postcode < 4121 || postcode > 4123);
while(邮政编码<4121 | |邮政编码>4123);
第二段时间也是如此


第一个while的第二次执行可能是因为您再次调用了
addRecord

实际上,每件事都是按照要求运行的,我唯一的问题是,当第二个while与条件匹配时,每个都从一开始就开始,而不是只询问purchaseamount我尝试了您提供的样品,但当我输入错误的价格时,它又从第一个循环开始。为了说明这一点,我的要求是,如果用户输入错误的价格,程序应该显示价格屏幕,而不是从一开始就启动。而我的状态总是显示为false。谢谢