Нужна помощь в добавлении методов в основной класс - PullRequest
0 голосов
/ 24 сентября 2019

Здравствуйте, я работаю над проектом для своего класса Java, я должен написать код для преподавателя алгебры, который выглядит следующим образом:

Написать программу, которая отображаетслучайно сгенерированная проблема, которая просит пользователя решить для переменной y, принимает данные от пользователя и печатает «правильный», если пользователь ответил правильно, и печатает «неправильный», если нет.Ваш главный должен дать одну проблему и затем выйти.Используйте один или несколько методов для создания этого поведения.

Это касается формулы mx + b.Итак, вот что у меня есть, и работает!

import java.util.Random;
import java.lang.Math;
import java.util.Scanner;

class Main {
    public static void main(String[] arg){
        double min_value = -100;
        double max_value = 100;
        double m_value = (int)(Math.random()*((max_value-min_value)+1))+min_value;
        double x_value = (int)(Math.random()*((max_value-min_value)+1))+min_value;
        double b_value = (int)(Math.random()*((max_value-min_value)+1))+min_value;
        System.out.println("Given: ");
        System.out.println("m = " + m_value);
        System.out.println("x = " + x_value);
        System.out.println("b = " + b_value);
        System.out.print("What is the value of y? ");
        Scanner user_input = new Scanner(System.in);
        String user_answer = "";
        user_answer = user_input.next();
        int correct_answer = (int)m_value * (int)x_value + (int)b_value;
        if (user_answer.equals(correct_answer))
            System.out.println("You are correct!");
        else
            System.out.print("Sorry, that is incorrect. ");
        System.out.println("The answer is " + correct_answer);
    }
}

, поэтому, даже если вывод верен, мне нужно разбить код на более мелкие методы, вот где я запутался в том, как принятьчасть этого кода и поместите его в другой метод, который при запуске также вызывает этот метод и выдает мне тот же результат.Я был готов предоставить материал, но чем больше я его читаю, тем больше путаюсь.Если у кого-то есть какие-либо идеи или предложения, пожалуйста, дайте мне знать, что любая информация будет очень признательна.Спасибо

Ответы [ 3 ]

0 голосов
/ 24 сентября 2019

Технически вы правильно решили проблему, вы используете один или несколько методов, но, возможно, вы пытаетесь сделать это обычным рефакторингом кода, который называется метод извлечения / функция извлечения функции Выполнение этого типаРефакторинг приводит к гораздо более читабельному и поддерживаемому коду, и его легко сделать.

Для начала определите код, который повторяется или выглядит похожим, в вашем случае следующие строки выглядят готовыми для метода извлечения:

double m_value = (int)(Math.random()*((max_value-min_value)+1))+min_value;
double x_value = (int)(Math.random()*((max_value-min_value)+1))+min_value;
double b_value = (int)(Math.random()*((max_value-min_value)+1))+min_value;

Обратите внимание, что RHS каждой строки идентичен, поэтому мы можем заменить явный код на вызов метода, подобный следующему:

double m_value = getRandomDoubleBetween(max_value, min_value);
double x_value = getRandomDoubleBetween(max_value, min_value);
double b_value = getRandomDoubleBetween(max_value, min_value);

private double getRandomDoubleBetween(double max_value, double min_value) {
     return (int)(Math.random()*((max_value-min_value)+1))+min_value;
 }

Вы можете идентифицировать другие области кода, которые содержат повторениеили, может быть, какой-то сложный для понимания код, который был бы более понятным, если бы он был извлечен в метод с именем, раскрывающим, что делает код.

0 голосов
/ 24 сентября 2019

Пожалуйста, просмотрите это, вы сравниваете string с integer,

if (user_answer.equals(correct_answer))

Это может помочь вам:

import java.util.Scanner;

class Main {

    public static void main(String[] arg) {

        double min_value = -100;
        double max_value = 100;

        double m_value = generateRandom(max_value, min_value);
        double x_value = generateRandom(max_value, min_value);
        double b_value = generateRandom(max_value, min_value);

        System.out.println("Given: ");
        System.out.println("m = " + m_value);
        System.out.println("x = " + x_value);
        System.out.println("b = " + b_value);

        checkAnswer(m_value, x_value, b_value);         
    }

    private static void checkAnswer(double m_value, double x_value, double b_value) {

        System.out.print("What is the value of y? ");

        Scanner user_input = new Scanner(System.in);
        String user_answer = "";
        user_answer = user_input.next();

        int correct_answer = (int) m_value * (int) x_value + (int) b_value;

        if (user_answer.equals(String.valueOf(correct_answer))) {
            System.out.println("You are correct!");
        } else {
            System.out.print("Sorry, that is incorrect. ");
            System.out.println("The answer is " + correct_answer);
            user_input.close();
        }
    }
    static int generateRandom(double max_value, double min_value) {

        return (int) ((int) (Math.random() * ((max_value - min_value) 
+ 1)) + min_value);

    }
}
0 голосов
/ 24 сентября 2019

Вот краткое изложение методов, так что это еще не полностью сделано.Спросите, если вам нужна дополнительная помощь!Удачи в выполнении домашней работы и становлении одним из разработчиков животных!

public class Main {

    public static void main(String[] args) {

    int a = 1; // give a value of 1

    methodTwo(a); // sending the int a into another method

    }

    // Here's method number two
    static void methodTwo (int a) { // it gives a's type and value

        System.out.println(a); //Gives out a's value, which is 1
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...