Чтобы быть более понятным, пожалуйста, помогите мне с menuChoice == 2.Как я могу получить этот цикл, чтобы принять положительное целое число для двух записей?
Я дошел до того, что если вы введете отрицательные значения, оно предложит вам ввести еще раз, пока оно не будет положительным, а затем вычисления выйдут отлично , Однако, когда я ввожу только положительные значения, он ничего не вычисляет. Я пытался какое-то время, но я просто не могу понять.
Что мне нужно сделать?
package finalExam;
//this is required for JOptionPane to work
import javax.swing.JOptionPane;
public class Geometry {
public static void main(String[] args) {
boolean valid = false;
int menuChoice;
do {
// create a menu and display it to the user
// then ask the user to choose an option
String menu = "1) Calculate the area of a circle\n"
+ "2) Calculate the area of a rectangle\n"
+ "3) Calculate the area of a triangle\n"
+ "4) Quit\n"
+ "Please enter your choice: (1, 2, 3, or 4)";
menuChoice = Integer.parseInt(JOptionPane.showInputDialog(menu));
if(menuChoice == 1)
{
String unknownRadius = JOptionPane.showInputDialog("What is the radius of the circle?");
if(Double.parseDouble(unknownRadius) < 0){
do{
JOptionPane.showMessageDialog(null, "Please enter positive numbers only.");
unknownRadius = JOptionPane.showInputDialog("What is the radius of the circle?");
}
while(Double.parseDouble(unknownRadius) < 0);
double knownRadius = Double.parseDouble(unknownRadius);
double circleArea = Math.pow(knownRadius, 2) * 3.14159;
JOptionPane.showMessageDialog(null, "The area of the circle is " + circleArea);
}
else if(Double.parseDouble(unknownRadius) > 0) {
double knownRadius = Double.parseDouble(unknownRadius);
double circleArea = Math.pow(knownRadius, 2) * 3.14159;
JOptionPane.showMessageDialog(null, "The area of the circle is " + circleArea);
valid = true;
}
} else if(menuChoice == 2){
String unknownLength = JOptionPane.showInputDialog("What is the length of the rectangle?");
if(Double.parseDouble(unknownLength) < 0){
do{
JOptionPane.showMessageDialog(null, "Please enter positive numbers only.");
unknownLength = JOptionPane.showInputDialog("What is the length of the rectangle?");
}
while(Double.parseDouble(unknownLength) < 0);
double knownLength = Double.parseDouble(unknownLength);
String unknownWidth = JOptionPane.showInputDialog("What is the width of the rectangle?");
if(Double.parseDouble(unknownWidth) < 0){
do{
JOptionPane.showMessageDialog(null, "Please enter positive numbers only.");
unknownWidth = JOptionPane.showInputDialog("What is the width of the rectangle?");
}
while(Double.parseDouble(unknownWidth) < 0);
double knownWidth = Double.parseDouble(unknownWidth);
double rectangleArea = knownLength * knownWidth;
JOptionPane.showMessageDialog(null, "The area of the rectangle is " + rectangleArea);
}
else if(Double.parseDouble(unknownLength) > 0){
knownLength = Double.parseDouble(unknownLength);
unknownWidth = JOptionPane.showInputDialog("What is the width of the rectangle?");
if(Double.parseDouble(unknownWidth) > 0) {
double knownWidth = Double.parseDouble(unknownWidth);
double rectangleArea = knownLength * knownWidth;
JOptionPane.showMessageDialog(null, "The area of the rectangle is " + rectangleArea);
valid = true;
}
}
}
} else if(menuChoice == 3){
String unknownBase = JOptionPane.showInputDialog("What is the base length of the triangle?");
if(Double.parseDouble(unknownBase) > 0){
double knownBase = Double.parseDouble(unknownBase);
String unknownHeight = JOptionPane.showInputDialog("What is the height of the triangle?");
if(Double.parseDouble(unknownHeight) > 0){
double knownHeight = Double.parseDouble(unknownHeight);
double triangleArea = (knownBase/2) * knownHeight;
JOptionPane.showMessageDialog(null, "The area of the triangle is " + triangleArea);
valid = true;
}
else { JOptionPane.showMessageDialog(null, "Please enter a positive number");
JOptionPane.showInputDialog("What is the base length of the triangle?");
}
}
else { JOptionPane.showMessageDialog(null, "Please enter a positive number");
JOptionPane.showInputDialog("What is the height of the triangle?");
}
}else if(menuChoice == 4){
System.exit(0);
} else
JOptionPane.showMessageDialog(null, "Please select from the options given (1-4)!");
}
while(!valid || menuChoice != 4);
}
}
Если это не было автоматическое форматирование, попробуйте его форматировать. Вы можете увидеть проблему в логическом потоке более легко. – nitind