Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建将产生相同结果的方法_Java_Methods - Fatal编程技术网

Java 创建将产生相同结果的方法

Java 创建将产生相同结果的方法,java,methods,Java,Methods,我是一名Java初学者,我对如何使用其他方法以及如何在其他方法中使用它们感到困惑。我想我已经完成了大部分作业,但我只需要帮助创建方法。一个是生成问题,另一个是显示消息 我知道为了调用一个方法 public static test(num1,num2,num3) 但是在我的代码中,我如何使其能够调用该方法并仍然使其正确循环 在给我的赋值指令中,为了做到这一点,我必须编写一个名为 public static in generateQuestion() 及 这是我的代码: //For Rando

我是一名Java初学者,我对如何使用其他方法以及如何在其他方法中使用它们感到困惑。我想我已经完成了大部分作业,但我只需要帮助创建方法。一个是生成问题,另一个是显示消息

我知道为了调用一个方法

public static test(num1,num2,num3)
但是在我的代码中,我如何使其能够调用该方法并仍然使其正确循环

在给我的赋值指令中,为了做到这一点,我必须编写一个名为

public static in generateQuestion() 

这是我的代码:

//For Random Generator
import java.util.Random;
//Uses a class Scanner
import java.util.Scanner;
public class Assign6 
{
    public static void main(String[] args)
    {
        //Scanner to Obtain Input from CW
        Scanner input = new Scanner(System.in);
        //Generate Random Number for Quiz
        Random randomNumbers = new Random();
        int number1 = 0;
        int number2 = 0;
        int answer = 0;
        //Rolls number from 1-9
        number1 = randomNumbers.nextInt(9);
        number2 = randomNumbers.nextInt(9);
        //Question prompt
        System.out.println("How much is " +number1+ " times " +number2+ "? ");
        answer = input.nextInt();
        //If Else While Statements
        if(answer == (number1*number2))
        {
            System.out.println("Good job! You got it right!");
        }
        else
        {
            while (answer !=(number1*number2))
            {
                System.out.println("You got it wrong, try again!");
                answer = input.nextInt();

            }
        }
    }   
}

如果我正确理解了您的问题,那么只需将打印问题并将答案显示到不同方法中的功能分离即可。请参见下面我编辑的代码版本

public class Assign6
{
    public static void main(String[] args)
    {
        // Scanner to Obtain Input from CW
        Scanner input = new Scanner(System.in);
        // Generate Random Number for Quiz
        Random randomNumbers = new Random();
        int number1 = 0;
        int number2 = 0;
        int answer = 0;
        // Rolls number from 1-9
        number1 = randomNumbers.nextInt(9);
        number2 = randomNumbers.nextInt(9);

        displayQuestion("How much is " + number1 + " times " + number2 + "?");

        answer = input.nextInt();
        // If Else While Statements
        if (answer == (number1 * number2))
        {
            displayMessage(Boolean.TRUE);
        }
        else
        {
            while (answer != (number1 * number2))
            {
                displayMessage(Boolean.FALSE);

                answer = input.nextInt();

            }
        }
    }

    public static void displayQuestion(String q)
    {
        System.out.println(q);
    }

    public static void displayMessage(Boolean isCorrect)
    {
        if (isCorrect)
        {
            System.out.println("Good job! You got it right!");
        }
        else
        {
            System.out.println("You got it wrong, try again!");
        }
    }

}

您将有两种方法

public static void generateQuestion() 
它将保存代码以生成随机值并输出它。它将返回void,因为它所做的只是打印出来

下一步你将有

public static void displayMessage(boolean isCorrect)

如果(
if(answer==(number1*number2))
为true且参数为true,则调用该函数。否则仍将调用它,但传入的参数将为false。此方法将确定
isCorrect
是否正确,并输出相应的消息

如果我做对了,我有一个可能有点愚蠢的解决方案,但对你的作业有效。
如果生成两个随机整数的
generateQuestion
,则打印问题并返回其倍数(答案)。
如果
isCorrect
true
且“你搞错了,再试一次!”则显示“干得好!你做对了!”的
displayMessgae
,否则

您可以调用
generateQuestion
,然后获取答案(在main中),并循环直到答案正确(根据
generateQuestion
的返回值)

每次您得到一个新答案(在循环中),请调用
displayMessgae(false)

循环结束后调用
displayMessgae(true)

这是我的工作代码:

//For Random Generator
import java.util.Random;
//Uses a class Scanner
import java.util.Scanner;
public class Assign6 
{
    public static int generateQuestion()
    {
        Random r = new Random();
        int x = r.nextInt(9), y = x = r.nextInt(9);
        System.out.println("How much is " + x + " times " + y + "? ");
        return x * y;
    }
    public static void displayMessage(boolean isCorrect)
    {
        if (isCorrect)
            System.out.println("Good job! You got it right!");
        else
            System.out.println("You got it wrong, try again!");
    }
    public static void main(String[] args)
    {
        //Scanner to Obtain Input from CW
        Scanner input = new Scanner(System.in);
        int rightAnswer = 0;
        rightAnswer = generateQuestion();
        while (input.nextInt() != rightAnswer)
            displayMessage(false);
        displayMessage(true);

    }   
}

您可能需要重新构造代码。当他们在出错后正确地调用方法时,它不会打印成功消息。我认为您需要检查方法的工作方式,以便使用:rightAnswer=generateQuestion();对吗?@guest_20你是什么意思?当输入的答案错误时,它不再显示错误“you got It error”消息。我没有为你调试它,我只解决了你实际提出的问题,即如何实现使用两种方法的要求。哦,好的,是的。这对我理解它有很大帮助。非常感谢。没问题。尝试使用调试器,它将帮助您逐步解决任何运行时问题。Eclipse附带了一个现成的、易于使用的工具。
//For Random Generator
import java.util.Random;
//Uses a class Scanner
import java.util.Scanner;
public class Assign6 
{
    public static int generateQuestion()
    {
        Random r = new Random();
        int x = r.nextInt(9), y = x = r.nextInt(9);
        System.out.println("How much is " + x + " times " + y + "? ");
        return x * y;
    }
    public static void displayMessage(boolean isCorrect)
    {
        if (isCorrect)
            System.out.println("Good job! You got it right!");
        else
            System.out.println("You got it wrong, try again!");
    }
    public static void main(String[] args)
    {
        //Scanner to Obtain Input from CW
        Scanner input = new Scanner(System.in);
        int rightAnswer = 0;
        rightAnswer = generateQuestion();
        while (input.nextInt() != rightAnswer)
            displayMessage(false);
        displayMessage(true);

    }   
}