2015-04-06 2 views
1

Я хочу, чтобы каждый следующий щелчок кнопки отображал следующее простое число, но не может найти способ его работы. Кто-нибудь может помочь?Android Studio (Java): Продолжить простое число для цикла на кнопке

public class MainActivity extends ActionBarActivity { 

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

     Button primeButton = (Button) findViewById(R.id.primeButton); 
     primeButton.setOnClickListener(
      new Button.OnClickListener(){ 
       public void onClick(View v){ 
        TextView primeText = (TextView) findViewById(R.id.primeText); 
        int max = 500; 
        for(int i=2; i<=max; i++) { 
         boolean isPrimeNumber = true; 
         for (int j = 2; j <= i; j++) { 
          if (i % j == 0) { 
           isPrimeNumber = false; 
           break; 
          } 

         } 
         if (isPrimeNumber){ 
          primeText.setText(Integer.toString(i)); 
         } 
        } 
       } 
      } 
     ); 
    } 
} 
+0

различные способы структурирования для цикла, но ничего, кажется, работает, я относительно новым для андроида программирования. – Oyee

+0

Сделайте файлы 'i' и' j' классными файлами. – Stan

+0

Подсказка. Если вы пытаетесь найти следующее простое число, как кнопка знает, что такое текущий предел? – mjhouseman

ответ

2

Попробуйте это

public class MainActivity extends Activity { 

Button b; 
int max = 500; 
TextView vTextView; 
int j = 2; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    b = (Button) findViewById(R.id.button1); 
    vTextView = (TextView) findViewById(R.id.textView1); 

    b.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 

    for (int i = j; i <= max; i++) { 
    if (isPrimeNumber(i)) { 
     vTextView.setText(i+""); 
     j = i+1; 
     break; 
    } 
    } 

    } 
    }); 

} 

public boolean isPrimeNumber(int number) { 

    for (int i = 2; i <= number/2; i++) { 
    if (number % i == 0) { 
    return false; 
    } 
    } 
    return true; 
} 

} 
+0

он напечатает следующее простое число по одному до 500 – Nivedh

+0

Его правильное печатает следующие простые числа на каждой кнопке. –

+0

Это правильно, спасибо @Niv только проблема отсчет начинается с номера 1 не 2. – Oyee

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