Java做的同时循环回到应用程序的开头

时间:2014-06-29 11:18:58

标签: java loops while-loop do-while

此问题是此链接Java SE do while loop issues

的后续跟进

这是一个申请房间名称的应用程序,然后第二个提示询问其尺寸以执行某些计算。一切都完成后,应用程序应该能够返回到第一个提示,询问房间名称等。

class Room
{
private String name;
private double length;
private double width;
private double height;

public Room(String r, double l, double w, double h)
{
    name = r;
    length = l;
    width = w;
    height = h;
}


public String getName()
{
    return name;
}

public double getLength()
{
    return length;
}

public double getWidth()
{
    return width;
}

public double getHeight()
{
    return height;
}

public double getArea()
{
    double area = length*width;
    return area;
}

public double getVolume()
{
    double volume = length*width*height;
    return volume;  
}

public void setName(String s)
{
    name = s;
}
}

我运行应用程序的主要方法。

import java.util.Scanner;

class TestRoom
{
public static void main(String [] args)
{
    Scanner userInput = new Scanner(System.in);
    System.out.println("Please enter the name of room");

    String roomName = userInput.next();
    while(!(roomName.equals("quit")))
    {           
        Room r;
        do
        {
            Scanner dimensionsInput = new Scanner(System.in);
            System.out.print("Please enter the dimensions of the room, length, width and height accordingly");

            double roomLength = dimensionsInput.nextDouble();
            double roomWidth = dimensionsInput.nextDouble();
            double roomHeight = dimensionsInput.nextDouble();

            r = new Room(roomName, roomLength, roomWidth, roomHeight);
        }
        while (r.getLength() == 0 || r.getWidth() == 0 || r.getHeight() == 0);


        System.out.println("The name of room: " + r.getName() + " Dimensions: L= " + r.getLength() + 
                                " X " + "W= " + r.getWidth() + " X " + "H= " + r.getHeight());
        System.out.println("Area of room= " + r.getArea());
        System.out.println("Volume of room= " + r.getVolume());

    }
    userInput.close();
}
}

现在应用程序只返回第二个提示而不是第一个提示,所以你们可以帮助我吗?再次感谢你们!

2 个答案:

答案 0 :(得分:1)

您无需声明两个扫描仪。你显然必须将第一个提示包含在外部while循环中。

“已修复”代码:

import java.util.Scanner;

class TestRoom
{
    public static void main(String[] args)
    {
        Scanner userInput = new Scanner(System.in);
        String roomName = "";

        while (!(roomName.equals("quit")))
        {
            System.out.println("Please enter the name of room");

            roomName = userInput.next();

            Room r;

            do
            {
                System.out
                        .print("Please enter the dimensions of the room, length, width and height accordingly");

                double roomLength = userInput.nextDouble();
                double roomWidth = userInput.nextDouble();
                double roomHeight = userInput.nextDouble();

                r = new Room(roomName, roomLength, roomWidth, roomHeight);
            } while (r.getLength() == 0 || r.getWidth() == 0
                    || r.getHeight() == 0);

            System.out.println("The name of room: " + r.getName()
                    + " Dimensions: L= " + r.getLength() + " X " + "W= "
                    + r.getWidth() + " X " + "H= " + r.getHeight());
            System.out.println("Area of room= " + r.getArea());
            System.out.println("Volume of room= " + r.getVolume());
        }

        userInput.close();
    }
}

答案 1 :(得分:1)

试试这个:

 class TestRoom {

    static Scanner userInput = new Scanner(System.in);

    static Scanner dimensionsInput = new Scanner(System.in);

    public static void main(String[] args) {

        while(true) {
            prompt();
        }

    }

    private static void prompt() {
        System.out.println("Please enter the name of room");

        String roomName = userInput.next();

        if (roomName.equals("quit")){
            userInput.close();
            dimensionsInput.close();
            System.exit(0);
        }
        Room r;
        do
        {
            System.out
                    .print("Please enter the dimensions of the room, length, width and height accordingly");

            double roomLength = dimensionsInput.nextDouble();
            double roomWidth = dimensionsInput.nextDouble();
            double roomHeight = dimensionsInput.nextDouble();
            r = new Room(roomName, roomLength, roomWidth, roomHeight);
        } while (r.getLength() == 0 || r.getWidth() == 0
                || r.getHeight() == 0);


        System.out.println("The name of room: " + r.getName()
                + " Dimensions: L= " + r.getLength() + " X " + "W= "
                + r.getWidth() + " X " + "H= " + r.getHeight());
        System.out.println("Area of room= " + r.getArea());
        System.out.println("Volume of room= " + r.getVolume());
    }
}