用户输入错误时循环,输入正确时循环增加

时间:2015-02-24 03:42:57

标签: java do-while

我的部分功课是创建一个程序,要求用户输入的项目价格范围为1-1000。如果用户输入的价格不在该范围内,则程序循环返回以询问相同项目的价格编号(项目编号范围为1-10)。如果输入价格在范围内,则程序将增加项目编号。并要求用户输入该项目的价格。这就是我做到的。但是只有第1项表现正常。请指教。谢谢

boolean priceinrange = false;       

do {
        System.out.println("Please enter the price of item " + x + ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true; 

    }
    while (!priceinrange);

    do {

        System.out.println("Please enter the price of item:"+ (x+=1) + ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;

    }   

    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item"+ (x+=1) + ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item" + x +      ":");

    }
    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item " + (x+=1) +  ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item" + x +  ":");
    }
    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item" + (x+=1)+":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item" + x +  ":");
    }
    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item" + (x+=1)+ ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item  :");
    }
    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item" + (x+=1) + ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item  :");
    }
    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item" + (x+=1)+ ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item  :");
    }
    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item" + (x+=1) +":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item  :");
    }
    while (!priceinrange);

    do {
        System.out.println("Please enter the price of item" +(x+=1)+ ":");
        price = kb.nextDouble();
        if (price>1 && price<1000)
            priceinrange= true;
        else
            System.out.println ("Please enter the price of item  :");
    }

    while (!priceinrange);

2 个答案:

答案 0 :(得分:0)

您需要在每个priceinrange之前将do { } while()设置为false。否则,即使您输入无效价格,它仍然是true(从“之前”开始)。

另一种方法是始终设置它:priceinrange = (price > 1 && price < 1000),而不是仅在满足条件时将priceinrange设置为true

答案 1 :(得分:0)

您需要删除所有复制和粘贴代码。额外的代码只会让这更难。

真正的诀窍是在输入错误和正确时循环。您只有在读取10个有效价格时才会停止循环播放。你不关心它最终循环的次数。你关心你有10个价格。

如果您认为这样,那么只需要一个循环。 do while (x <= 10)if (price > 1 && price < 1000) { x += 1;}将为您带来美好的世界。

您应该能够在少于25行代码中解决此问题。我在没有使用priceinrange布尔值的情况下解决了它。

如果这还不够,请告诉我。