2016-11-02 7 views
0

私はこれが以前に尋ねられましたが、私が理解できない方法ではないことを知っています。Java渡し変数toStringハッシュを避ける

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; 
    } 
} 

私がリターンを取り除くと、numbersCombinedが表示されますが、それだけです。戻り値のある場所では、戻り値の上にある印刷行は実行されず、元のnumbersCombinedが印刷されます(100未満であるため、例えば10と20を使用してはいけません)。 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つの数字を受け取り、この関数を使ってこの数値のシリーズが以前の最大値よりも高いかどうかを比較し、それはユーザーが4つの数字のシリーズを入力し、最後に最大値を印刷するまで、ループを使って前進する新しい最大値です。

これは、すべての機能がなくても、すべてインラインで簡単に書き込むことができました。しかし、関数に比較を送信すると、私はそれを返す方法を理解していない、と私は一日中コンセプトを理解しようと過ごしました。一日中。だから、私はそれが愚かな答えになることを知っている間、私は愚かですが、私は(申し訳ありませんが、一種の守りのような)試していないためではありません。

基本的には、クラスに2つの変数(この例だけがあります)を送信し、それらを比較し、1つを変更してメインクラスに戻したいと思います。この例では、変数を1つ送信し、比較し、送信するだけです。

+0

あなたはtestClass' 'であなたのメソッドを呼び出してみましたか?それはあなたが望むように見える整数を返します。 –

答えて

0

TestClass内でメソッドを呼び出す必要があります。あなたのコードはすでにそのメソッドから整数を返しています。

あなたはクラスの実行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要素をコンストラクタに渡す必要があります。 new testClass(numbersCombined); "new testClass()"だけを渡すと、コンパイラはエラーをスローします。引数なしで新しいコンストラクタを作成しない限り –

関連する問題