2016-10-04 39 views
3

我在绝望需要与Java程序的帮助,我需要为学校的竞争!我一直对这个至少3个小时过去3天,我不出来.... =(以下提供详细路线:数学类,方法和随机数(JAVA)

编写调用每个数学的方法的程序从下面的列表类,提供显示调用的方法输出,发送到方法的值,返回的结果列出的每个方法会告诉你要使用的值,例如:

上市方法:

double pow(double a, double b): use 2.0 and 3.0. 

你的程序将显示:

Math.pow(2.0, 3.0) = 8.0. 

当调用接受双打的方法,使用数字与像上述例子中的至少一个十进制数,即使它是一个零。请记住带小数的数字是双字。尝试使用会产生易于验证的结果的值。

下面的列表:

double pow(double a, double b): Use 3.0 and 2.0 

double sqrt(double x): Use 25.0 

int max(int a, int b): Use 6 and 2 

double max(double a, double b): Use -50.0 and 7.0 

static double random() 

输出示例:

Math.pow(3.0, 2.0) = 9.0 

Math.sqrt(25.0)=5.0 

Math.max(6,2)=6 

Math.max(-50.0,7.0)=7.0 

Math.random()= /*-random value-*/ 

测试与示例中显示的数值程序,修复任何错误。 向程序中添加一个名为randomStudy的方法,该方法没有参数并且不返回任何值。在这种方法中,执行以下操作:

一个。声明三个int变量:total,min和max。将总数设置为0,最小值为11,最大值为-1。

b。创建一个将运行1000次的循环。在循环体中,生成一个介于1和10之间的随机int值。将此数字添加到您的总数。如果此数字小于最小值,则用新数字更新最小值。如果它大于最大值,则用新数字更新最大值。

℃。在循环后,显示如下:

最小值:X 最大值:Y 平均位:Z 替换x和y与您的最小值和最大值。计算z的总数除以1000d。 从主要方法调用新的randomStudy方法。 突出显示并复制Eclipse中显示的输出。将输出粘贴到源代码文件的底部。在文本结果上方添加文本结果,然后注释掉刚刚打开的文本以及输出文本。您的评论结果应该是这个样子:

/* 

Results: 

Math.pow(3.0, 2.0)= 9.0 

Math.sqrt(25.0) = 5.0 

Math.max(6, 2) = 6 

Math.max(-50.0, 7.0) = 7.0 

Math.random() = -random number- 

Min value: 1 

Max value: 10 

Average: 5.553 

*/ 

所以,我遇到的问题是有关运行循环1000次后显示的最大和最小数出1000个号码的最后一部分。并显示1,000个数字的均值。这里是我的代码

class MathMethodsProgram { 

public static void main(String[] args) { 
    //  Prints the pow method. 

    System.out.println("Math.pow(2.0, 3.0) = " + Math.pow(2.0, 3.0)); 

    //  Prints the sqrt method 

    System.out.println("Math.sqrt(25) = " + Math.sqrt(25)); 

    //  Prints the max number 

    System.out.println("Math.max(6, 3) = " + Math.max(6, 3)); 

    //  Prints the max number 

    System.out.println("Math.max(-50.0,7.0) = " + Math.max(-50.0, 7.0)); 

    //  Prints a random number 
    System.out.println("Math.random(); = " + Math.random());  

    randomStudy(); 

    } 

public static void randomStudy(){ 
    int total = 0; 
    int min = 11; 
    int max = -1; 
    int newtotal = 0; 
    int i; 
    int randomInt = 0; 

     for(i = 0; i < 1000; i++){    
      randomInt = 1 + (int)(Math.random() * 11); 

      newtotal = (randomInt + total); 

      } 
     if (randomInt < min) { 
      min = 1 + (int) Math.random(); 
     } else { 
      System.out.println("Min: " + min); 
     } 

     if (randomInt > max) { 
      max = 1 + (int) Math.random(); 
     } else { 
      System.out.println("Max: " + max); 
     } 

     System.out.println("Min value:" + min); 
     System.out.println("Max Value:" + max); 
     System.out.println("Average:"+ newtotal/1000d); 
    } 



} 

当我在Eclipse中运行代码,这是输出:提前

Math.pow(2.0, 3.0) = 8.0 
Math.sqrt(25) = 5.0 
Math.max(6, 3) = 6 
Math.max(-50.0,7.0) = 7.0 
Math.random(); = 0.1824716748725944 
Min value:1 
Max Value:1 
Average:0.008 

感谢

+1

问题是,您在检查值之前关闭循环迭代! – Erik

+0

Furhtermore,你问'if(randomValue Turing85

+0

如果你小心格式化代码,错误可能会变得明显!你需要在每个循环的迭代中检查并更新你的'min'和'max'。 –

回答

0

在你的1000环,你有

newtotal = (randomInt + total); 

哪个不增加newtotal,它只需要t他最后一个号码。看起来你的最后一个数字是8,所以平均值是0.008。这将是更好的:

total = (randomInt + total); 
// Then after the for loop is complete, average = total/1000; 

接下来,randomInt与最小/最大比较,而不是分配一个新的随机值,应先分配基础上,最后一个随机数的新的最小值/最大值(这需要在你的1000 for循环,不是之后):

if (randomInt > max) { 
    max = randomInt; 
} 

希望这有助于!

-1

您的代码非常接近。

你只需要把你的if语句中的for循环,并在那里你写

max = 1 + (int) Math.random(); 

应改为:

max = randomInt; 

(做相同分钟,以便它读取“分钟= randomInt;“)

-1

这里我将提供一个我创建的代码。我的目的是为您提供如何创建多个功能的想法,这些功能与我们从类获得的功能相同。我收录的评论帮助这些班级自我解释,我希望这对你有所帮助。我还包括对话框来显示数据,所以如果有人正在寻找帮助如何使用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); 
    } 

}