Java 使用SharedReference后计算错误
我正在开发一个应用程序来检查素数并显示它们。用户需要能够保存号码,并在重新启动应用程序时加载号码 从SharedReferences检索保存的int时出现问题。代码保存int并将其加载到“loaddata”函数中。但是当我开始检查保存的是否是素数时,代码跳转了2个素数。如果我保存“11”,下一个素数应该是“13”,但它会跳到“19” 如果有人能指出正确的方向那就太好了,因为我是个新手Java 使用SharedReference后计算错误,java,android,Java,Android,我正在开发一个应用程序来检查素数并显示它们。用户需要能够保存号码,并在重新启动应用程序时加载号码 从SharedReferences检索保存的int时出现问题。代码保存int并将其加载到“loaddata”函数中。但是当我开始检查保存的是否是素数时,代码跳转了2个素数。如果我保存“11”,下一个素数应该是“13”,但它会跳到“19” 如果有人能指出正确的方向那就太好了,因为我是个新手 public class MainActivity extends AppCompatActivity {
public class MainActivity extends AppCompatActivity {
private TextView textView;
private EditText editText;
private Button applyPrimeButton;
private Button saveButton;
private Button loadButton;
public static final String SHARED_PREFS = "sharedPrefs";
int max = 500;
int j = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textview);
editText = (EditText) findViewById(R.id.edittext);
applyPrimeButton = (Button) findViewById(R.id.apply_prime_button);
saveButton = (Button) findViewById(R.id.save_button);
loadButton = (Button) findViewById(R.id.load_button);
applyPrimeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = j; i <= max; i++) {
if (isPrimeNumber(i)) {
textView.setText(i+"");
j = i+1;
break;
}
}
}
});
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveData();
}
});
loadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadData();
}
});
}
public boolean isPrimeNumber(int nummer) {
for (int i = 2; i <= nummer / 2; i++) {
if (nummer % i == 0) {
return false;
}
}
return true;
}
public void saveData() {
SharedPreferences sp = getSharedPreferences(SHARED_PREFS, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
int nummer = Integer.parseInt(textView.getText().toString());
editor.putInt("prime_save", nummer);
editor.commit();
Toast.makeText(this, "Data saved", Toast.LENGTH_SHORT).show();
}
public void loadData() {
SharedPreferences sp = getSharedPreferences(SHARED_PREFS, Activity.MODE_PRIVATE);
int nummer = sp.getInt("prime_save",0);
textView.setText(String.valueOf(nummer));
}
}
public类MainActivity扩展了AppCompatActivity{
私有文本视图文本视图;
私人编辑文本;
专用按钮applyPrimeButton;
私人按钮保存按钮;
专用按钮加载按钮;
公共静态最终字符串SHARED\u PREFS=“sharedPrefs”;
int max=500;
int j=2;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(textView)findViewById(R.id.textView);
editText=(editText)findViewById(R.id.editText);
applyPrimeButton=(按钮)findViewById(R.id.apply_prime_按钮);
saveButton=(按钮)findViewById(R.id.save_按钮);
loadButton=(按钮)findViewById(R.id.load\u按钮);
applyPrimeButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
对于(int i=j;i几个问题:
加载数据时,您没有将j更新为正确的值,而是依赖于您在textview中显示的内容
要找到素数,只需检查原始数的平方根而不是它的一半
试试这个:
applyPrimeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(j<max ){
if (isPrimeNumber(j)) {
textView.setText(j+"");
j++;
}
}
}
});
public void saveData() {
SharedPreferences sp = getSharedPreferences(SHARED_PREFS, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("prime_save", j);
editor.commit();
Toast.makeText(this, "Data saved", Toast.LENGTH_SHORT).show();
}
public void loadData() {
SharedPreferences sp = getSharedPreferences(SHARED_PREFS, Activity.MODE_PRIVATE);
int nummer = sp.getInt("prime_save",0);
j = nummer;
textView.setText(String.valueOf(nummer));
}
applyPrimeButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(j)