数学类、方法和随机数(Java)

数学类、方法和随机数(Java),java,random,methods,Java,Random,Methods,我迫切需要一个Java程序的帮助,我需要它来竞争学校!在过去的3天里,我已经为此工作了至少3个小时,但我无法理解=(以下是指示: 编写一个程序,从下面的列表中调用Math类的每个方法,并提供输出,显示调用的方法、发送给该方法的值以及返回的结果。每个列出的方法将告诉您要使用哪些值。例如: 列出的方法: double pow(double a, double b): use 2.0 and 3.0. 您的程序将显示: Math.pow(2.0, 3.0) = 8.0. 调用接受双精度的方法时,请

我迫切需要一个Java程序的帮助,我需要它来竞争学校!在过去的3天里,我已经为此工作了至少3个小时,但我无法理解=(以下是指示:

编写一个程序,从下面的列表中调用Math类的每个方法,并提供输出,显示调用的方法、发送给该方法的值以及返回的结果。每个列出的方法将告诉您要使用哪些值。例如:

列出的方法:

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的方法,该方法没有参数,也不返回值。在此方法中,请执行以下操作:

a、 声明三个int变量:total、min和max。将total设置为0,min设置为11,max设置为-1

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

c、 循环结束后,显示以下内容:

最小值:x 最大值:y 平均值:z 用最小值和最大值替换x和y。用总值除以1000d计算z。 从主方法调用新的随机研究方法。 突出显示并复制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个数字中的最大和最小数字。同时显示1000个数字的平均值。以下是我的代码:

 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);
    }



}

提前感谢

在您的1000 for循环中,您已经

newtotal = (randomInt + total);
它不会增加新总数,只会取最后一个数字。看起来你的最后一个数字是8,所以平均值是0.008。最好:

total = (randomInt + total);
// Then after the for loop is complete, average = total / 1000;
接下来,为了比较randomInt和min/max,而不是分配一个新的随机值,您应该基于最后一个随机数分配新的min/max(这需要在1000 for循环内,而不是之后):


希望这有帮助!

您的代码非常接近

您只需要将if语句放在for循环中以及编写的位置

max = 1 + (int) Math.random();
应改为:

max = randomInt;

(对min执行相同操作,使其显示为“min=randomInt;”)

这里我将提供一个我创建的代码。我的目的是向您提供如何创建多个函数的想法,这些函数与我们从Math类中获得的函数等效。我包含了一些注释,帮助这些类变得自解释,我希望这对您有所帮助。我还包括显示数据的对话框,因此这是一个如果有人正在寻求如何使用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;
    }   

}

问题是在检查值之前关闭循环迭代!此外,您会询问
if(randomValue
,但随后将一个新的随机值分配给min:
min=1+(int)Math.random();
.Furhterore,如果您只是调用,它将生成一个介于
0
1
之间的值。由于
浮动的
s和
s在转换为
int
时被打底,因此您将只得到一个
1
。如果您注意正确设置代码格式,错误可能会变得很明显!您需要检查并在每个循环的迭代中更新你的
min
max
。我该如何解决这些问题?我是Java的完全初学者。=(@BlazeRyder如果你上编程课,请你的老师/教授,他们会得到报酬来解释事情。或者阅读教程,比如。
max = randomInt;
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;
    }   

}
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);
    }

}