2016-12-27 2 views
0

У меня есть два класса, и я пытаюсь получить это значение от пользователя в классе UserInterface, но я хочу, чтобы он был сохранен в моем втором классе под названием «Калькулятор».Сохранение значения в другом классе

import java.util.Scanner; 

public class UserInterface { 

    public static void main (String Args[]) { 
     Calculator calculator = new Calculator(); 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter your first value: \t"); 
     input.nextInt(firstValue); 
     System.out.println("Enter your second value: \t"); 
     input.nextInt(secondValue); 
    } 
} 

Я хотел бы input.nextInt (firstValue); для передачи значения firstValue, которое находится в классе «калькулятор», показанном ниже.

public class Calculator { 

    public int firstValue; 
    public int secondValue; 

    public Calculator(int firstValue, int secondValue) { 
     this.firstValue = firstValue; 
     this.secondValue = secondValue;   
    } 
} 

Заранее спасибо.

+1

Этот код не компилируется. Если вы не показываете нам пустой конструктор. –

+0

'калькулятор.firstValue' является 'public'. Что мешает вам хранить в нем прямо? –

+0

OP, пожалуйста, прочитайте базовый учебник по Java перед публикацией вопросов здесь. –

ответ

3

Вы можете использовать такой код:

public static void main (String Args[]) { 
    Calculator calculator = new Calculator(); 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter your first value: \t"); 
    calculator.firstValue = input.nextInt(); 
    System.out.println("Enter your second value: \t"); 
    calculator.secondValue = input.nextInt(); 
} 

или код вроде этого:

public static void main (String Args[]) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter your first value: \t"); 
    int firstValue = input.nextInt(); 
    System.out.println("Enter your second value: \t"); 
    int secondValue = input.nextInt(); 
    Calculator calculator = new Calculator(firstValue, secondValue); 
} 

В первом примере, вы устанавливаете значения после того, как экземпляр calculator был создан.

Во втором случае вы создаете экземпляр calculator со значениями, которые вы хотите.

+1

'nextInt' не принимает аргумента. Также, пожалуйста, добавьте несколько слов, объясняющих. –

5

Scanner.nextInt()возвращает значение, вы не передадите ему значение. Что-то вроде этого:

int firstValue = input.nextInt(); 

ли это для обоих ваших входов, то после вы определили значения, которые вы можете передать их в конструктор для класса:

Calculator calculator = new Calculator(firstValue, secondValue); 

Кроме того, должны сделать поля на Calculator класс private вместо public. Общественные поля плохой формы, и есть много литературы, которая объясняет это лучше, чем я могу, в простом ответе. Но идея сводится к тому, что объект должен исключительно владеть своими членами и обеспечивать доступ к этим членам (через геттеры/сеттеры в Java обычно) только тогда, когда это необходимо.

2

Вы должны узнать больше об объектно-ориентированном программировании, это очень тривиальный вопрос. Вы можете сделать это во многом способе, например:

System.out.println("Enter your first value: \t"); 
int value = input.nextInt(); 
calculator.firstValue = value; 

или

Scanner input = new Scanner(System.in); 
System.out.println("Enter your first value: \t"); 
int firstValue = input.nextInt(); 
System.out.println("Enter your second value: \t"); 
int secondValue = input.nextInt(); 
Calculator calculator = new Calculator(firstValue, secondValue); 

или вы можете использовать сеттер, чтобы установить значение и сделать поля частных. Но, как я уже говорил, вы должны узнать больше о ООП

0

nextInt() не принимает никаких аргументов!

Просто создайте геттер и сеттер для полей в калькуляторе и установите их во время чтения через сканер;

ИЛИ

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

Смежные вопросы