繁体   English   中英

从editview到textview的给定数字的主要因素

[英]Prime factors of given number from editview to textview

我正在做一个活动,你在editview(usernumber)中写下数字,然后你在它旁边的textview中得到素数(primefactor)。 我为素数使用了一些代码条,但我不太了解,所以我将感谢您的帮助。 编辑:按照建议对代码进行了一些更改,但代码仍然没有做任何事情:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class activityone extends AppCompatActivity {
    EditText usernumber;
    TextView primefactor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
        usernumber = (EditText) findViewById(R.id.number);
        primefactor = (TextView) findViewById(R.id.primefactor);
        usernumber.addTextChangedListener(prvoWatcher);
    }
    private final TextWatcher prvoWatcher = new TextWatcher() {

        double f,
                c;
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.toString().equals("")){
                f = Double.parseDouble(s.toString());
                while (f%2==0)
                {
                    primefactor.setText(2 + " ");
                    f /= 2;
                }

                int i;
                for (i = 3; i <= Math.sqrt(f); i+= 2)
                {
                    // While i divides f, print i and divide n
                    while (f%i == 0)
                    {
                        primefactor.setText(i + " ");
                        f /= i;
                    }
                }

                // This condition is to handle the case whien
                // f is a prime number greater than 2
                if (f > 2)
                    primefactor.setText(String.valueOf(f));
            }



        }
    };
}

提前致谢。

错误是String.valueOf(int);

它需要一个整数或浮点变量而不是数据类型。

primefactor.setText(String.valueOf(int));

这不是它的工作原理,您不能将原始类型作为参数放入其中。 int替换为if ,具体取决于您要显示的内容。

所以它看起来像

primefactor.setText(String.valueOf(i));

或者

primefactor.setText(String.valueOf(f));

编辑:当然,如果你想使用i变量,你必须在 for 循环之前声明 if,而不是在它里面。

int i;
for (i = 3; i <= Math.sqrt(f); i+= 2)
{
    // While i divides n, print i and divide n
    while (f%i == 0)
    {
        primefactor.setText(i + " ");
        f /= i;
    }
}
primefactor.setText(String.valueOf(int));

什么是 int ?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM