[英]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
替换为i
或f
,具体取决于您要显示的内容。
所以它看起来像
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.