2014-04-07 81 views
-2

我需要在我的android程序中使用euclidian算法。這是我的主要活動:歐幾里得算法

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.TextView; 

public class MainActivity extends Activity { 
TextView answer; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    answer = (TextView) findViewById(R.id.textView1); 

    Button proceed = (Button) findViewById(R.id.button1); 
    proceed.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       int ans = Euclid.gcd(6, 9); 
       answer.setText(ans); 
      } 
     }); 
     } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


} 

,我想我的程序做的事情,就是給我最大公司(GCD),當我點擊按鈕。我試圖用這部分代碼做到這一點:

public void onClick(View v) { 
int ans = Euclid.gcd(6, 9); 
answer.setText(ans); 
} 

這裏是我的歐幾里得類:

public class Euclid { 

// recursive implementation 
public static int gcd(int p, int q) { 
    if (q == 0) return p; 
    else return gcd(q, p % q); 
} 

// non-recursive implementation 
public static int gcd2(int p, int q) { 
    while (q != 0) { 
     int temp = q; 
     q = p % q; 
     p = temp; 
    } 
    return p; 
} 

public static void main(String[] args) { 
    int p = Integer.parseInt(args[0]); 
    int q = Integer.parseInt(args[1]); 
    int d = gcd(p, q); 
    int d2 = gcd2(p, q); 
    System.out.println("gcd(" + p + ", " + q + ") = " + d); 
    System.out.println("gcd(" + p + ", " + q + ") = " + d2); 
} 
} 

的事情是,當我按一下按鈕我的應用程序崩潰。那麼問題出在哪裏,我該如何解決。我知道這是無效onClick部分。請幫忙。

+1

你可以發佈你的LogCat? –

+0

夥計們,你能解釋你爲什麼投票嗎? –

回答

2

TextView.setText(int)的整數參數是資源ID,而不是要顯示的文字整數。相反,使用類似

answer.setText(Integer.toString(ans)); 

要顯示在TextView的整數。

+0

非常感謝。附:你爲什麼拒絕? –