2016-11-02 3 views
0

Я знаю, что это было задано раньше, но не так, как я понял, потому что я тупой.Java Передача переменных, исключая tostring hash

So.

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

import java.io.*; 
public class testing123 { 
    public static void main(String[] args) { 

    InputStreamReader input = new InputStreamReader(System.in); 
    BufferedReader reader = new BufferedReader(input); 

    Integer a; 
    Integer b; 
    Integer numbersCombined; 
    try { 
      System.out.println("Please enter a number"); 
      a = Integer.parseInt(reader.readLine()); 

      System.out.println("Please enter a number"); 
      b = Integer.parseInt(reader.readLine()); 


      numbersCombined = (a + b); 




     testClass Check = new testClass(); 

     System.out.println("Your numbers combined is " +numbersCombined); 
     System.out.println(Check); 

    } catch (IOException e){ 
     System.out.println("Error reading from user"); 
    } 

    } 

} 

class testClass { 
    public static Integer testClass (Integer numbersCombined) { 


if (numbersCombined > 100) { 
    numbersCombined = numbersCombined; 
} 
else { 
    numbersCombined = 100; 
} 
System.out.println(numbersCombined); 
return numbersCombined; 
    } 
} 

Если я удалю возврат, это напечатает числа, объединенные, но это все, что он делает. При возврате на место он не выполняет линию печати над возвратом и сначала печатает исходные номераCombined (что не должно, если вы используете, скажем, 10 и 20, так как это меньше 100), а затем печатает testClass @ 76046e53, а не фактическое значение. Я знаю, что есть способ переопределить его, но ответы, которые я нашел, не работают для меня.

Я знаю, что этот ответ: http://www.google.com/url?q=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F29140402%2Fhow-do-i-print-my-java-object-without-getting-sometype2f92e0f4&sa=D&sntz=1&usg=AFQjCNGIzxlBSH8xIS7hurKe6_Euc7B8RQ

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

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

Я смог написать это без ЛЮБЫХ функций, всех встроенных, простых, как пирог. Но как только я отправлю сравнение функции, я не понимаю, как отправить ее обратно, и я весь день пытался понять концепцию. ВЕСЬ ДЕНЬ. Поэтому, хотя я знаю, что это будет глупый ответ, это потому, что я глуп, но не потому, что я не пытался (извините, вроде оборонительный. Разочарованный).

В принципе, я хочу отправить два класса (этот пример только один) в класс, сравнить их, изменить ОДИН из них и вернуть его в основной класс. В этом примере я просто пытаюсь отправить ONE-переменную, сравнить ее и отправить ее обратно.

+0

Пробовали ли вы вызов метода в 'testClass'? Он возвращает целое число, которое похоже на то, что вы хотите. –

ответ

0

Вы должны вызвать метод в TestClass. Ваш код уже возвращает целое число из этого метода.

После создания экземпляра класса Run testClass.testClass(numbers)

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

0

Попробуйте сделать что-то вроде этого:

import java.io.*; 

public class HelloWorld{ 

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

     Integer a; 
     Integer b; 
     Integer numbersCombined; 
     try { 
      System.out.println("Please enter a number"); 
      a = Integer.parseInt(reader.readLine()); 

      System.out.println("Please enter a number"); 
      b = Integer.parseInt(reader.readLine()); 

      numbersCombined = (a + b); 

      testClass Check = new testClass(numbersCombined); // constructor should be like this 

      System.out.println("Your numbers combined is " + numbersCombined); 
      System.out.println(Check); 

     } catch (IOException e){ 
      System.out.println("Error reading from user"); 
     } 

    } 
} 

class testClass { 
    Integer numbersCombined; 

    // This is a constructor 
    public testClass (Integer numbersCombined) { 
    if (numbersCombined > 100) { 
     this.numbersCombined = numbersCombined; // use this to represent the object 
    } else { 
     this.numbersCombined = 100; 
    } 
    System.out.println(numbersCombined); 
    } 

    // Add method toString() 
    public String toString() { 
     return this.numbersCombined.toString(); 
    } 
} 

Вот бегущий пример: http://www.tutorialspoint.com/compile_java_online.php?PID=0Bw_CjBb95KQMWVlVNUJDMC1nVGM

+0

Когда я копирую и вставляю этот код, я получаю сообщение об ошибке: [строка 21] Ошибка: конструктор testClass в классе testClass не может применяться к заданным типам; требуется: аргументов не найдено: java.lang.Целая причина: фактические и формальные списки аргументов различаются по длине – DoctorMoonSMash

+0

Вы должны передать элемент Integer в конструкторе: новый testClass (numbersCombined); , если вы передадите только «новый тестClass()», поэтому компилятор выдает ошибку. Если вы не создадите новый конструктор без каких-либо аргументов –

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