2016-11-15 9 views
1

私の目標は文字列を "def"から "fed"に戻すことです。Javaの戻り文字列はコンパイラで何もしません

この例(下記)では、new_stringの値は返されません。 文字通り、コンソールには何も表示されません。私は、システムの印刷を行うために自分のコードを変更したときに

public class ReverseString { 

public String reverse(String input) { 
    String new_string = ""; 
    int iterator = 0; 
    int length = input.length(); 

     while(iterator < length){ 
      char string_input = input.charAt(iterator); 
      new_string = string_input + new_string; 
      iterator ++; 
     } 
    return new_string; 
} 


public static void main(String[] args){ 
    ReverseString test = new ReverseString(); 
    test.reverse("def"); 
} 
} 

しかし、私は「給餌。」正しい結果を得ます

public class ReverseString { 

public void reverse(String input) { 
    String new_string = ""; 
    int iterator = 0; 
    int length = input.length(); 

     while(iterator < length){ 
      char string_input = input.charAt(iterator); 
      new_string = string_input + new_string; 
      iterator ++; 
     } 
    System.out.println(new_string); 
} 


public static void main(String[] args){ 
    ReverseString test = new ReverseString(); 
    test.reverse("def"); 
} 
} 

質問: なぜ結果が空白になるのですか?

+1

なぜ、 'new_string'の値が返されていないと思いますか? – azurefrog

+4

ヒント:コードに印刷ステートメントがない場合は、何も印刷されていないとどうして驚きますか? – azurefrog

+0

あなたの入力azurefrogに感謝します。私はちょうどreturn new_stringが文字列の値をそれ自身でコンソールに出力すると仮定しました。私は、mainメソッドでsystem.out.printの中でメソッドを実行する必要があることを知らなかった! – dlsdaviddls

答えて

1

あなたはおそらくこのようなものを望んでいましたか?文字列変数を返します。印刷する。

public class ReverseString { 

public String reverse(String input) { 
    String new_string = ""; 
    int iterator = 0; 
    int length = input.length(); 

     while(iterator < length){ 
      char string_input = input.charAt(iterator); 
      new_string = string_input + new_string; 
      iterator ++; 
     } 
    return new_string; 
} 



public static void main(String[] args){ 
    ReverseString test = new ReverseString(); 
    System.out.println(test.reverse("def")); 
} 
} 
+0

これはまさに私がやろうとしていたものです!私は実際にJavaでこれを行ったことを今まで見たことがないので、何が欠けているか分からなかった。 – dlsdaviddls

+1

それは、私の下の答えを読んで、それは私が召集したよりも良い説明だと言われています。 :P – DejaVuSansMono

4

戻り値を持っている任意の方法では問題

は、あなたが特定の値を返すことがあります。しかし、あなたはそれを使う必要はありません。 あなたのケースではまさに何が起こったのですか。あなたは行動を行い、価値を返し、それを使用しませんでした。

解決策

あなたは[あなたは最初のコード]以下のようなメインのメソッドの呼び出し元の行を変更し、コンソールに印刷結果を確認したい場合。

System.out.println(test.reverse("def"));//used the return value. 

理解方法は戻り値の無効とき

<return_type> <name/ID>(<parameters>){ 
    //....code 
    return <reference of return__type/an object of return_type>;//return_value statement 
} 

戻り値文が書かれていません、次のように

構文で返します。

返信値が返されるたびに、それを使用するかしないかを選択できます。

関連する問題