2016-04-04 7 views
2

Dies ist mein Android Java-Code. Ich verstehe nicht, warum es nicht wie Java-Code funktioniert. es ist ein Beispiel für die Primzahl. Angenommen, wir wollen die Primzahl zwischen 1 und 5 finden. Also erwarte ich das Ergebnis 2, 3, 5. Aber ich habe nur das Ergebnis 5. In meinem Java-Code habe ich das korrekte Ergebnis erhalten. Ich meine 2, 3, 5. Bitte helfen Sie mir, dieses Problem zu lösen.Android für Schleife funktioniert nicht wie Java

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_prime); 
     Button btn = (Button)this.findViewById(R.id.click_btn); 
     btn.setOnClickListener(new Button.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       TextView resp = (TextView) findViewById(R.id.response); 
       // Get number from EditText 
       EditText startnumber = (EditText) findViewById(R.id.first_number); 
       EditText endnumber = (EditText) findViewById(R.id.second_number); 

       // get the Strings from the EditTexts 
       String number1 = startnumber.getText().toString(); 
       String number2 = endnumber.getText().toString(); 

       // Convert Strings to int 
       int x1number = Integer.parseInt(number1); 
       int x2number = Integer.parseInt(number2); 

       String str = "List of prime numbers between " + x1number + " and " + x1number + ": "; 
       //resp.setText(str); 
       for(int i = x1number; i <= x2number; i++){ 
        if(isPrime(i)){ 
         resp.setText(str + String.valueOf(i)); 
        } 
       } 

      } 
     }); 
    } 
    public static boolean isPrime(int n){ 
     if(n <= 1) { 
      return false; 
     } 
     for(int i = 2; i <= n/2; i++) { 
      if (n % i == 0) { 
       return false; 
      } 
     } 
     return true; 
    } 

Hier ist mein Java-Code.

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package primenumberstwo; 
import java.util.Scanner; 

/** 
* 
* @author vubon 
*/ 
public class PrimeNumberstwo { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
     Scanner s = new Scanner(System.in); 
     System.out.println("Enter your first number: "); 
     int start = s.nextInt(); 
     System.out.println("Enter your second number: "); 
     int end = s.nextInt(); 
     System.out.println("List of prime numbers bettween " + start + " and " + end); 
     for(int i = start; i <= end; i++){ 
      if(isPrime(i)){ 
       System.out.println(String.valueOf(i)); 

      } 
     } 
    } 

    public static boolean isPrime(int n){ 
     if(n <= 1) { 
      return false; 
     } 
     for(int i = 2; i <= n/2; i++) { 
      if (n % i == 0) { 
       return false; 
      } 
     } 
     return true; 
    } 
} 

Antwort

1

Problem nicht in Android SDK ist. Deine Logik ist falsch.

  String str = "List of prime numbers between " + x1number + " and " + x1number + ": "; 
      //resp.setText(str); 
      for(int i = x1number; i <= x2number; i++){ 
       if(isPrime(i)){ 
        resp.setText(str += String.valueOf(i));//see change here 
       } 
      } 
+0

Danke Freund. Es funktioniert jetzt. Eigentlich lerne ich Android SDK. –

+0

akzeptieren, wenn Sie eine Lösung haben. – shobhan

1

Versuchen mit:

str = str + String.valueOf(i); 
resp.setText(str); 
+0

Vielen Dank für Ihre Hilfe. Prost –

3

Sie den Inhalt des TextView resp in jeder Iteration, dass das Überschreiben ist, warum Sie gerade le letzte zu sehen.

versuchen, etwas wie folgt aus:

String str = "List of prime numbers between " + x1number + " and " + x1number + ": "; 
    String result = ""; 
    for(int i = x1number; i <= x2number; i++){ 
     if(isPrime(i)){ 
      result = result + " " + i; 
     } 
    } 
    if(!("".equalsIgnoreCase(result.trim()))){ 
     resp.setText(str + result); 
    } 
+0

Vielen Dank für Ihren wertvollen Kommentar :) –

1

Sie alle Primzahlen gefunden haben, aber mit letzte am letzten Schleife Iterierte außer Kraft setzen.

Versuchen Sie das;

String str = "List of prime numbers between " + x1number + " and " + x1number + ": "; 
    resp.setText(str); 
    for(int i = x1number; i <= x2number; i++){ 
     if(isPrime(i)){ 
      resp.setText(resp.getText() + String.valueOf(i)); 
     } 
    } 
+1

Großartig es funktioniert jetzt. Danke, Mann . Ich lerne aus diesem Grund habe ich Problem nicht herausgefunden. Happy to coding –

+0

@VubonRoy Gern geschehen, ich denke, Upvote oder akzeptieren statt Antworten Antworten sind wertvoller für die Gemeinschaft –

+0

Sorry Freund, kann ich Ihnen nicht upvote geben. Weil mein Ruf sehr gering ist. Aber dein Login funktioniert auch. :) Vielen Dank –