2012-06-21 1 views
2

Я новичок на языке Java, и я использую «текстовую панель». У меня проблема с моей простой программой. моя задача - ввести 2 значения и показать «сумму», «разницу», «продукт» и «фактор» вообще. (простое право?), в котором ниже приведен класс, который должен выполнять арифметику. в котором «правильно», как я скомпилировал.Входные переменные (ввод пользователем «Буферизованный считыватель») для перехода к классу?

public class mathclass 
{ 

    int x; 
    int y; 
    int total; 


    void add() 
    { 
     total = x+y; 
    } 

    void sub() 
    { 
     total = x-y; 
    } 

    void multi() 
    { 
     total = x*y; 
    } 

    void div() 
    { 
     total = x/y; 
    } 

} 

И вот основная программа, которая должна быть входным и выходным сигналом программы. моя проблема заключается в том, что я не могу передать 2 переменные (num1 и num2) в «mathclass» . Я исследовал, как передать 2 переменные другому классу. но нет ничего такого, что у меня есть. Я использовал некоторые, например, «частные или публичные» для переменных. мой учитель сказал использовать BufferedReader для ввода. и мне трудно найти правильную программу. (извините, если у меня был неправильный английский (если я ошибаюсь.))

import java.io.*; 
public class mathmain 
{ 

    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

    public static void main(String[]args)throws IOException 
    { 


     mathclass math1 = new mathclass(); 

     System.out.print("Enter 1st Number :"); 
     num1 = Integer.parseInt(br.readLine()); 
     System.out.println(" "); 

     System.out.print("Enter 2nd Number :"); 
     num2 = Integer.parseInt(br.readLine()); 
     System.out.println(" "); 

     System.out.println(" "); 
     System.out.println(" "); 
     System.out.println(" "); 

     math1.add(); 
     { 
      System.out.print("Sum : "); 
      System.out.println(math1.total); 
     } 
     System.out.println(" "); 
     math1.sub(); 
     { 
      System.out.print("Difference : "); 
      System.out.println(math1.total); 
     } 
     System.out.println(" "); 

     math1.multi(); 
     { 
      System.out.print("Product : "); 
      System.out.println(math1.total); 
     } 
     System.out.println(" "); 
     math1.div(); 
     { 
      System.out.print("Quotient : "); 
      System.out.println(math1.total); 
     } 
    } 
} 
+0

Две очень разные проблемы - использование BufferedReader для получения значений от пользователя для программирования, а для получения значений из вашего основного метода класс выполняет работу. Как говорит @aioobe, yo должен передать эти значения. В противном случае эти x и y поля в созданном объекте остаются с начальными значениями по умолчанию (0), и ничего не происходит. Я имею в виду. Если вы не скажете: * пусть поле x в объекте math1 имеет значение num1, недавно полученное значение *, это не будет волшебным образом. – helios

+0

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

ответ

0

Непонятно, что вы пытаетесь сделать здесь. (Почему не add принимать два аргумента, например?)

Возможно, ваш после чего-то вроде этого:

// Set up arguments 
math1.x = num1; 
math1.y = num2; 

// Perform the add. 
math1.add(); 
// {    <-- brace completely useless. 

// Print the result 
System.out.print("Sum : "); 
System.out.println(math1.total); 
// }    <-- brace completely useless. 

Тем не менее, я хотел бы призвать вас использования Возвращаемые значения и используйте параметры:

class MathClass { 

    public int add(int a, int b) { 
     return a + b; 
    } 

    ... 
} 

, а затем использовать этот класс, как

int sum = math1.add(num1, num2); 

System.out.println("Sum: " + sum); 
+0

плохо сделайте это, но мне нужно переделать всю программу? Я не так хорош с java извините. – LCkniGhT

+0

Ну, да. Вам в значительной степени придется переделать всю программу. Привыкайте к этому ... Я был вынужден время от времени отбрасывать десятки тысяч строк кода. (и я неплохо разбираюсь в Java ;-) – aioobe

+0

благодарю вас за помощь aioobe – LCkniGhT

0

Вы должны взглянуть на код кода на Java, потому что вы ошибетесь.

Либо создать конструктор для инициализации х & у либо поместить их в метод добавления (х, у), которая приведет вас сделать статический метод и удалить ссылки из х & у из класса. То же самое относится к сумме, которая должна быть возвратом вашей функции.

+0

конструктор? извините, что вы имеете в виду под этим? и какой код я бы разместил на программа? – LCkniGhT

+0

@LCkniGhT http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html Вы должны хотя бы прочитать основы объектно-ориентированного программирования. –

0

Попробуйте это,

Используйте два параметр Конструктор класса mathmain ...

public mathmain(int x, int y){ 

this.x = x; 
this.y = y; 


} 

Пожалуйста, используйте заглавный кулак алфавита имени класса (например: MathMain),

и да, используйте Camel Case для записи класса, переменных, метода и т. Д. Имена в java.

0

С тех пор, как вы начинаете, я не буду указывать на недостатки дизайна. Ваша проблема связана с тем, как вы используете ваши значения чтения. Читаешь значения в num1 и num2, но вы никогда не установить их в объекте mathclass:
math1.x = num1;
math1.y = num2;
По aioobe, что сказал, вы должны смотреть на правила проектирования ява, чтобы помочь вам создать надежные, полезные классы.Я также рекомендую вам инкапсулировать ваших классов и использовать параметры и значения возвратов, когда это возможно.

Удачи в изучении java, и я надеюсь, что это помогло!

+0

спасибо, потому что я перешел на базовый язык с помощью java и Я перехожу к объектно-ориентированному программированию. является первой программой. что я слишком занялся сейчас. – LCkniGhT

+0

спасибо. это код, который я не знаю, как использовать. спасибо большое, это помогло :) – LCkniGhT

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

  • Нет связанных вопросов^_^