Используя вход сканера в геттеры и сеттеры? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть два класса Java, один из которых содержит методы получения и установки, другой - класс драйвера.Мне нужно, чтобы пользовательский ввод со сканера в классе драйвера был в одном из получателей в первом классе.Пользовательский ввод должен быть двойным, потому что он будет использоваться как формула в геттере.

//First Class
public class shopping
{
    String orangeSelected;
    public double getOrangeSelected()
    {
        return (user input makes a formula to be returned to the driver class)
    }

    public void setOrangeSelected(String orangeSelected)
    {
        this.orangeSelected = orangeSelected;
    }
}

//Driver Class
import java.util.Scanner
public class shoppingApp
{
    public static void main(String[] args)
    {
        Scanner inputOrangeSelected = new Scanner(System.in)
        System.out.println("Premium Oranges");
        String orangeSelected = inputOrangeSelected.nextLine();
    }
}

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Проблема, с которой вы сталкиваетесь, заключается в том, что вы не храните строку «orangeSelected» в экземпляре объекта покупки.Для этого вам нужно создать экземпляр вашего торгового объекта, а затем вызвать метод "setOrangeSelected".

Пример

Вот как это будет выглядеть в вашем классе драйверов:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    /* I would recommend changing your shopping class name to Shopping
     for correct naming conventions.*/
    Shopping shopping = new Shopping();

    /* Changed the system out to a question. Not a nessicary change.
     All depends on what your program is doing. */
    System.out.println("What type of oranges would you like?");
    String orangeType = input.nextLine();

    // Here you are actually storing the user input into the shopping object.
    shopping.setOrangeSelected(orangeType);
}

Как только вход помещен в объект, вы можете взять эту переменную и вызвать для нее «getOrangeSelected», чтобы получить тип оранжевого цвета, например:

    System.out.println(shopping.getOrangeSelected());

Дополнительные ресурсы

Предлагаю вам ознакомиться с Соглашениями об именах Oracle для языка Java.Следуйте им, чтобы улучшить читабельность вашего кода.

Редактировать

Для ясности я также хотел добавить, что у вас есть метод getter, возвращающий переменную orangeSelected, например:

public double getOrangeSelected() {
    return orangeSelected;
}
0 голосов
/ 24 сентября 2019

Что было бы действительно лучше, так это поместить все в один класс, нет смысла разделять 1 класс на 2 только для того, чтобы отделить геттеры и сеттеры от остальных, это не имеет смысла .Интересно, неправильно ли вы поняли свое задание?

import java.util.Scanner;
class shoppingApp
{
    //since it's an instance field not local to the class it's declared here instead of main
    static String orangeSelected = "";

    public static void main(String[] args)
    {
        //orange  selected is an odd name for a scanner, just use scan or something similar
        Scanner scan = new Scanner(System.in); //note that you were missing a semicolon
        System.out.println("Premium Oranges\n"); //include a new line or a space before asking for input, for example with \n
        orangeSelected = scan.nextLine();
    }
    //setter
    public static void setOrangeSelected(String str)
    {
        orangeSelected = str;
    }
    //getter
    public static String getOrangeSelected()
    {
        return orangeSelected;
    }

    //Note that all methods and instance fields are static because the main method must be static if you don't understand this yet that's ok.
}

Теперь, если по какой-то причине у вас было бы , чтобы использовать два класса, это выглядело бы примерно так, хотя я бы заметил, что простое копирование и вставка моего кода без понимания егобыть изменой .

import java.util.Scanner;
class shoppingApp
{
    //normally this shouldn't be public
    public static String orangeSelected = "";

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in); 
        System.out.println("Premium Oranges\n");
        orangeSelected = scan.nextLine();
    }
}

 class gettersAndSetters
{
    //setter
    public void setOrangeSelected(String str)
    {
        Main.orangeSelected = str;
    }
    //getter
    public String getOrangeSelected()
    {
        return Main.orangeSelected;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...