Android for loop不像java那样工作

Android for loop不像java那样工作,java,android,math,primes,Java,Android,Math,Primes,这是我的Android Java代码。我不明白为什么它不像java代码那样工作。这是素数的例子。假设我们想找到介于1到5之间的素数。所以我希望结果是2,3,5。但我只得到了5分。在我的Java代码中,我得到了正确的结果。我是说2,3,5。请帮我解决这个问题 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

这是我的Android Java代码。我不明白为什么它不像java代码那样工作。这是素数的例子。假设我们想找到介于1到5之间的素数。所以我希望结果是2,3,5。但我只得到了5分。在我的Java代码中,我得到了正确的结果。我是说2,3,5。请帮我解决这个问题

    @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;
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prime);
按钮btn=(按钮)this.findViewById(R.id.click\u btn);
btn.setOnClickListener(新建按钮.OnClickListener(){
@凌驾
公共void onClick(视图v){
TextView resp=(TextView)findViewById(R.id.response);
//从EditText获取数字
EditText开始编号=(EditText)findViewById(R.id.first_编号);
EditText endnumber=(EditText)findViewById(R.id.second_编号);
//从编辑文本中获取字符串
String number1=startnumber.getText().toString();
String number2=endnumber.getText().toString();
//将字符串转换为int
int x1number=Integer.parseInt(number1);
int x2number=Integer.parseInt(number2);
String str=“介于“+x1number+”和“+x1number+”之间的素数列表:”;
//分别为setText(str);
对于(int i=x1number;i尝试:

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

问题不在Android SDK中。您的逻辑是错误的

            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
                }
            }
String str=“介于“+x1number+”和“+x1number+”之间的素数列表:”;
//分别为setText(str);

对于(int i=x1number;i您在每次迭代中都会覆盖
TextView resp
的内容,这就是为什么您只看到最后一次

试着这样做:

    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);
    }
String str=“介于“+x1number+”和“+x1number+”之间的素数列表:”;
字符串结果=”;

对于(inti=x1number;i您已经找到了所有素数,但在最后一个循环迭代中用最后一个素数覆盖

试试看

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));
         }
    }
String str=“介于“+x1number+”和“+x1number+”之间的素数列表:”;
分别为setText(str);

对于(int i=x1number;谢谢你,朋友。它现在正在工作。实际上我正在学习Android SDK。很好,它现在正在工作。谢谢你。我学习的原因是我没有找出问题。很高兴coding@VubonRoy不客气,我认为投票或接受而不是评论答案对社区更有价值对不起,朋友,我不能给你答案向上投票。因为我的声誉很低。但你的登录也有效。:)谢谢你的宝贵评论:)谢谢你的帮助。干杯
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));
         }
    }