此问题是此链接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();
}
}
现在应用程序只返回第二个提示而不是第一个提示,所以你们可以帮助我吗?再次感谢你们!
答案 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());
}
}