Win a copy of Think Java: How to Think Like a Computer Scientist this week in the Java in General forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

problems

 
Ian Dudek
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have been working on this project for a bit now and I had a few questions because I am stumped.

I have it set up as a loop. Every time you would not select a one of the proper numbers it would error out. So what I did was create an error box to appear when you don't select the right one (right below). It won't pop up until after you selected and entered in a number then it it will pop up every time you select something. I think it has something to do with my placing of the code. One of my friends was saying it should break before it loops but if it breaks then the loop stops. Is there a way to have it break then start back in the loop?

"if(choice!=1||choice!=2||choice!=3||choice!=4||choice!=5)
JOptionPane.showMessageDialog(null,"Wrong option entered", " error",
JOptionPane.ERROR_MESSAGE);"

Next every time you choose to select a number it will error out. I have no clue how to fix this problem.







// This program is a loop that will calculate the area of shapes
// Written by Ian Dudek

import javax.swing.JOptionPane;

public class app1{


public static void main(String args[])
{
String first,second;
double choice ;
double radius,width,area, length;

//intialize the string

String value=" ";

value =JOptionPane.showInputDialog("Please chose one of the options:"+"\n" +
"a)Enter 1 to calculate the area of the Circle"+ "\n"+
"b)Enter 2 to calculate the area of the Triangle"+ "\n"+
"c)Enter 3 to calculate the area of the Square"+ "\n"+
"d)Enter 4 to calculate the area of the Rectangle"+"\n"+
"e)Enter 5 to calculate the area of the Cube"+"\n"+
"f)Enter 6 to exit the program");
choice=Double.parseDouble(value);

// while option is not 6 continue

while(choice!=6){



//if selected number calculate the area of circle

if(choice==1){
first = JOptionPane.showInputDialog("Enter the value of radius");
radius = Double.parseDouble(first);
area = Math.PI*radius*radius;
//print out the result
JOptionPane.showMessageDialog(null,"The area of the Circle: "+area,"result",
JOptionPane.INFORMATION_MESSAGE);
}

//If selected number is 2 calculate the area of triangle and prints result

else if(choice==2){
first=JOptionPane.showInputDialog("Enter the value of lenght");
second=JOptionPane.showInputDialog("Enter the value of width");
length = Double.parseDouble(first);
width=Double.parseDouble(second);
area= (width*length)/2;
JOptionPane.showMessageDialog(null,"The area of triangle: "+ area,"result",
JOptionPane.INFORMATION_MESSAGE);
}

//If selected number is 3 calculate the area of square and prints result

else if(choice==3){
first = JOptionPane.showInputDialog("Enter the value of length");
length = Double.parseDouble(first);//ge string into integer
area=length*length;
JOptionPane.showMessageDialog(null,"The area of the square: "+ area," result",
JOptionPane.INFORMATION_MESSAGE);
}

//If selected number is 4 calculate the area of rectangle and prints result

else if(choice==4){
first=JOptionPane.showInputDialog("Enter the value of length");
second=JOptionPane.showInputDialog("Enter the value of width");
length=Double.parseDouble(first);
width=Double.parseDouble(second);
area=width*length;
JOptionPane.showMessageDialog(null,"The area of the rectangle: "+ area,"result",
JOptionPane.INFORMATION_MESSAGE);
}

//If selected number is 5 calculat the area of cube and prints result

else if(choice==5) {
first=JOptionPane.showInputDialog("Enter the value of length");
length=Double.parseDouble(first);
area=6*length;
JOptionPane.showMessageDialog(null,"The area of the cube: "+ area,"result",
JOptionPane.INFORMATION_MESSAGE);
}

value =JOptionPane.showInputDialog("Please chose one of the options:"+"\n" +
"a)Enter 1 to calculate the area of the Circle"+ "\n"+
"b)Enter 2 to calculate the area of the Triangle"+ "\n"+
"c)Enter 3 to calculate the area of the Square"+ "\n"+
"d)Enter 4 to calculate the area of the Rectangle"+"\n"+
"e)Enter 5 to calculate the area of the Cube"+"\n"+
"f)Enter 6 to exit the program");

choice=Double.parseDouble(value);


// If choice is not 1-5 a error message will pop up with an error

if(choice!=1||choice!=2||choice!=3||choice!=4||choice!=5)
JOptionPane.showMessageDialog(null,"Wrong option entered", " error",
JOptionPane.ERROR_MESSAGE);


//end of while loop if number selected is 6

}
System.out.println("Program terminated\n");
System.exit(0);
}
}
 
Christophe Verré
Sheriff
Posts: 14691
16
Eclipse IDE Ubuntu VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You should use "&&" instead of "||".
The logic is not clean either. You'd better make it more readable, like:
1. use do/while
2. read for a number
3. if 6 break
4. check number
5. do something according to the value
 
marc weber
Sheriff
Posts: 11343
Java Mac Safari
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Code Tags would help make this more readable too.
 
Campbell Ritchie
Sheriff
Posts: 48910
58
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
That sort of menu is crying out for a "switch" block.
 
Stan James
(instanceof Sidekick)
Ranch Hand
Posts: 8791
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Was Satou's correction to use && instead of || clear? It's a fundamental bit of boolean algebra, one of DeMorgan's Laws. My college didn't have a CS department, so I got this in a Philosophy class on logic:

The opposite of (A or B) is (!A and !B)
The opposite of (A and B) is (!A or !B)

or

not (P and Q) = (not P) or (not Q)
not (P or Q) = (not P) and (not Q)

In your program, a good result is (choice==1 or choice==2). We're testing for a bad result, which is the opposite of the good result, which is (choice!=1 and choice!=2).
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic