Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SharedReference后计算错误_Java_Android - Fatal编程技术网

Java 使用SharedReference后计算错误

Java 使用SharedReference后计算错误,java,android,Java,Android,我正在开发一个应用程序来检查素数并显示它们。用户需要能够保存号码,并在重新启动应用程序时加载号码 从SharedReferences检索保存的int时出现问题。代码保存int并将其加载到“loaddata”函数中。但是当我开始检查保存的是否是素数时,代码跳转了2个素数。如果我保存“11”,下一个素数应该是“13”,但它会跳到“19” 如果有人能指出正确的方向那就太好了,因为我是个新手 public class MainActivity extends AppCompatActivity {

我正在开发一个应用程序来检查素数并显示它们。用户需要能够保存号码,并在重新启动应用程序时加载号码

从SharedReferences检索保存的int时出现问题。代码保存int并将其加载到“loaddata”函数中。但是当我开始检查保存的是否是素数时,代码跳转了2个素数。如果我保存“11”,下一个素数应该是“13”,但它会跳到“19”

如果有人能指出正确的方向那就太好了,因为我是个新手

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)