2016-05-10 10 views
0

"ディスクを" + start + "から" + end "に移動します。System.out.printlnをvariable.getText()に「変換する」方法はありますか。</p> <p>のSystem.out.println(:私は出力がこのように行われているJavaプログラムでTowersOfHanoiと呼ばれるクラスを持って、</p> <p>を私はアンドロイドのアプリケーションにしたいJavaプログラムを書かれているアンドロイド

私はTowersOfHanoiを呼び出すのにmainActivityファイルを持っていますが、system.ouut ...からvariable.getText.TowersOfHanoiなどに変更する方法はわかりません。

MainActivity code: 
     package com.example.towersofhanoiapp; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends Activity { 


    private TowersOfHanoi towersOfHanoi; 
    private Button submit; 
    static TextView display; 
    private EditText discs; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     towersOfHanoi = new TowersOfHanoi(); 
     submit = (Button) findViewById(R.id.btnSubmit); 
     display = (TextView)findViewById(R.id.display); 
     discs = (EditText)findViewById(R.id.userInput); 

     submit.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       String discsString= discs.getText().toString(); 
       if (!discsString.isEmpty()){ 
        int discsInt =Integer.parseInt(discsString); 
        TowersOfHanoi.solve(discsInt,"Peg A", "Peg B", "Peg C"); 

       } 
      } 
     }); 


    } 
} 

TowerOfHanoi方法

package com.example.towersofhanoiapp; 

public class TowersOfHanoi { 

    public static void solve(int n, String start, String auxiliary, String end) { 
     if (n == 1) { 
      System.out.println("Move disk "+ n + " from " + start + " to " + end); 
     } else { 
      solve(n - 1, start, end, auxiliary); 
      System.out.println("Move disk " + n + " from " + start + " to " + end); 
      solve(n - 1, auxiliary, start, end); 
     } 
    } 
} 
+0

TextView.setText()http://developer.android.com/reference/android/widget/TextView.html#setText(java.lang.CharSequence) –

答えて

0

discsの使用setText()、そしてあなたの方法solveを変換するには、代わりのprintlnを行うのStringを返します。

最も簡単には、StringBuilderをメソッドの先頭に作成し、System.out.printlnbuilder.appendに置き換えます。 メソッドの最後にreturn builder.toString()を追加し、このメソッドの結果をsetTextで使用する必要があります。

public static void solve(...) { 
    StringBuilder builder = new StringBuilder(); 
    if (...) { 
     .... 
    } else { 
     .... 
    } 
    return builder.toString(); 
} 
0
package com.example.towersofhanoiapp; 

public class TowersOfHanoi { 

    public static String solve(int n, String start, String auxiliary, String end) { 
     if (n == 1) { 
      return "Move disk "+ n + " from " + start + " to " + end); 
     } else { 
      solve(n - 1, start, end, auxiliary); 
      return ("Move disk " + n + " from " + start + " to " + end); 
      solve(n - 1, auxiliary, start, end); 
     } 
    } 

とあなたのクリックで

submit.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     String discsString= discs.getText().toString(); 
     if (!discsString.isEmpty()){ 
      int discsInt =Integer.parseInt(discsString); 
      display.setText(TowersOfHanoi.solve(discsInt,"Peg A", "Peg B", "Peg C")); 

     } 
    } 
}); 
0

このケースで何ができたを行うには(そして唯一の場合は、それらのSystem.out通話を維持したい)のSystem.outプリントを作ることです別のPrintStreamに転送します。あなたがのSystem.outを使用し続けたい場合は、このソリューションは唯一の回避策です

public static final String THIS_IS_THE_SENTENCE_YOU_ARE_EXPECTING = "This is the sentence you are expecting!"; 

@Test 
public void testSystemOut() throws Exception { 

    final SystemOut systemOut = new SystemOut(); 
    final ByteArrayOutputStream printer = systemOut.testSystemOut(); 

    System.out.print(THIS_IS_THE_SENTENCE_YOU_ARE_EXPECTING); 

    assertThat(printer.toString(), equalTo(THIS_IS_THE_SENTENCE_YOU_ARE_EXPECTING)); 
} 

:次に、あなたがこのような何かを行うことができます

public ByteArrayOutputStream testSystemOut(){ 
     final StringWriter stringWriter = new StringWriter(); 
     final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
     final PrintStream printStream = new  PrintStream(byteArrayOutputStream); 
     System.setOut(printStream); 
     return byteArrayOutputStream; 
} 

を:あなたはこのような何かを行うことができます。これを行うと、すべてのSystem.out呼び出しがコンソールにもう印刷されないことに注意してください。古いPrintStreamへの参照を保持し、必要に応じてスイッチをオン/オフすることによって何らかの管理をしない限り、出力ストリームにのみ印刷されるようになりました。

関連する問題

 関連する問題