這裏我將提供一個我創建的代碼。我的目的是爲您提供如何創建多個功能的想法,這些功能與我們從類獲得的功能相同。我收錄的評論幫助這些班級自我解釋,我希望這對你有所幫助。我還包括對話框來顯示數據,所以如果有人正在尋找幫助如何使用javax.swing類,它是一個很好的資源。
第一類MyMath.java包含用於執行所有計算的方法。
package com.exercise.lecture2;
/**
* Create a class call "MyMath" that has the following class methods:
* static boolean isEven(int x) --> returns true is number is even
* static long absolute(long x) --> returns the absolute value of x
* static double hypotenuse (double x, double y) --> returns sqrt(x^2 + y^2)
* static double max (double a, double b) --> returns max of a or b
* static double min (double a, double b) --> returns min of a or b
*
* @author Samuel
*
*/
public class MyMath {
/**
* An even number is an integer which is "evenly divisible" by two.
* This means that if the integer is divided by 2, it yields no remainder.
* Zero is an even number because zero divided by two equals zero, which despite not being a natural number, is an integer.
* Even numbers can be either positive or negative.
*
* @param x
* @return
*/
static boolean isEven(int x){
if (x % 2 == 0)
return true;
else
return false;
}
/**
* In mathematics, the absolute value or modulus of a real number is the number without the sign.
* The absolute value of 2 is 2, the absolute value of -2 is also 2.
*
* @param x
* @return
*/
static long absolute(long x) {
if (x >= 0)
return x;
else
return (-1*x);
}
/**
* The hypotenuse is the side opposite the 90 degrees angle in a right triangle. It is always the longest side.
*
* @param x
* @param y
* @return
*/
static double hypotenuse (double x, double y) {
return Math.sqrt((x * x) + (y * y));
}
/**
* Maximum of two values
* @param a
* @param b
* @return
*/
static double max (double a, double b) {
if (a >= b)
return a;
else
return b;
}
/**
* Minimum of two values
* @param a
* @param b
* @return
*/
static double min (double a, double b) {
if (a < b)
return a;
else
return b;
}
}
第二類MathClassTest.java包含爲了顯示使用對話框的javax.swing類。
package com.exercise.lecture2;
import javax.swing.JOptionPane; // importing the javax.swing class in order to use dialog box in my code
/**
* static boolean isEven(int x) --> returns true is number is even
* static long absolute(long x) --> returns the absolute value of x
* static double hypotenuse (double x, double y) --> returns sqrt(x^2 + y^2)
* static double max (double a, double b) --> returns max of a or b
* static double min (double a, double b) --> returns min of a or b
*
* Write an application that allows the user to select between the above methods and
* returns the response to the user.
*
* @author Samuel
*
*/
public class MathClassTest {
public static void main(String[] args) {
/* used to test the functions on MyMath.java class, here is how all of this begin
* then I change it to make this tester use javax.swing class in order to display using
* dialog boxes.
*
// is Even
System.out.println(MyMath.isEven(-100));
// Absolute value of an integer
System.out.println(MyMath.absolute(-10));
// Hypotenuse of two values
System.out.println(MyMath.hypotenuse(3, 4));
// Max of two values
System.out.println(MyMath.max(3, -4));
// Min of two values
System.out.println(MyMath.min(3, -4));
*/
boolean repeat;
do {
//String name = JOptionPane.showInputDialog(null, "Enter your name", "Enter name", JOptionPane.PLAIN_MESSAGE);
String option = JOptionPane.showInputDialog(null,"Choose 'a' or 'A' to determine if a number is EVEN or not. \n" // options
+ "Choose 'b' or 'B' to determine the ABSOLUTE value of a number. \n" // the (+) sign concatenate the all of the followings Strings as one
+ "Choose 'c' or 'C' to determine the HYPOTENUSE of two values. \n"
+ "Choose 'd' or 'D' to determine the MAXIMUM of two values. \n"
+ "Choose 'e' or 'E' to determine the MINIMUM of two values. \n"
+ "Choose 'q' or 'Q' to quit this simple application. \n\n"
, "My Math class, by S. Mayol", JOptionPane.QUESTION_MESSAGE); // title bar of the dialog box
repeat = true;
if (option.equals("Q") || option.equals("q")) {
JOptionPane.showMessageDialog(null, "Thank you for participating...", "by Samuel Mayol", JOptionPane.INFORMATION_MESSAGE);
repeat = false;
System.exit(0);
} else {
if (option.equals("A")||option.equals("a")){
try { // to prevent that the value inserted is an integer and not a letter
String val = JOptionPane.showInputDialog("Enter a number to deternine if the number is even");
JOptionPane.showMessageDialog(null, "Is the number " + val + " even? " + MyMath.isEven(Integer.valueOf(val)),
"Even", JOptionPane.INFORMATION_MESSAGE); // add a title message on a dialog box
repeat = true;
} catch(Exception e){
JOptionPane.showMessageDialog(null, "The input " + option + " is not valid integer, please try again", "WARNING!!!",
JOptionPane.WARNING_MESSAGE);
}
}
else if (option.equals("B")||option.equals("b")){
try {
String val = JOptionPane.showInputDialog("Enter a number to calculate absolute value of that number");
JOptionPane.showMessageDialog(null, "The absolute value of " + val + " is: " + MyMath.absolute(Long.valueOf(val)),
"Absolute", JOptionPane.INFORMATION_MESSAGE);
repeat = true;
} catch(Exception e){
JOptionPane.showMessageDialog(null, "The input " + option + " is not valid integer, please try again", "WARNING!!!",
JOptionPane.WARNING_MESSAGE);
}
}
else if (option.equals("C")||option.equals("c")){
try {
String val = JOptionPane.showInputDialog("Enter the first side to calculate the hypotenuse");
String val2 = JOptionPane.showInputDialog("Enter the second side to calculate the hypotenuse");
JOptionPane.showMessageDialog(null, "The hypotenuse of " + val + " and " + val2 + " is: " + MyMath.hypotenuse(Double.valueOf(val), Double.valueOf(val2)),
"Hypotenuse", JOptionPane.INFORMATION_MESSAGE);
repeat = true;
} catch(Exception e){
JOptionPane.showMessageDialog(null, "The any of the inputs " + option + " are not valid integer, please try again", "WARNING!!!",
JOptionPane.WARNING_MESSAGE);
}
}
else if (option.equals("D")||option.equals("d")){
try {
String val = JOptionPane.showInputDialog("Enter the first number to calculate the max value");
String val2 = JOptionPane.showInputDialog("Enter the second number to calculate the max value");
JOptionPane.showMessageDialog(null, "The max of " + val + " and " + val2 + " is: " + MyMath.max(Double.valueOf(val), Double.valueOf(val2)),
"Maximum", JOptionPane.INFORMATION_MESSAGE);
repeat = true;
} catch(Exception e){
JOptionPane.showMessageDialog(null, "The any of the inputs " + option + " are not valid integer, please try again", "WARNING!!!",
JOptionPane.WARNING_MESSAGE);
}
}
else if (option.equals("E")||option.equals("e")){
try {
String val = JOptionPane.showInputDialog("Enter the first number to calculate the min value");
String val2 = JOptionPane.showInputDialog("Enter the second number to calculate the min value");
JOptionPane.showMessageDialog(null, "The min of " + val + " and " + val2 + " is: " + MyMath.min(Double.valueOf(val), Double.valueOf(val2)),
"Minimum", JOptionPane.INFORMATION_MESSAGE);
repeat = true;
} catch(Exception e){
JOptionPane.showMessageDialog(null, "The any of the inputs " + option + " are not valid integer, please try again", "WARNING!!!",
JOptionPane.WARNING_MESSAGE);
}
}
else
JOptionPane.showMessageDialog(null, "The input " + option + " is not valid, please try again", "A, B, C, D, E, or Q",
JOptionPane.WARNING_MESSAGE);
}
} while(repeat);
}
}
問題是,您在檢查值之前關閉循環迭代! – Erik
Furhtermore,你問'if(randomValue
Turing85
如果你小心格式化代碼,錯誤可能會變得明顯!你需要在每個循環的迭代中檢查並更新你的'min'和'max'。 –