Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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 计算高分的GetDefaultSharedReferences循环问题_Java_Android_Loops_Opengl Es_Sharedpreferences - Fatal编程技术网

Java 计算高分的GetDefaultSharedReferences循环问题

Java 计算高分的GetDefaultSharedReferences循环问题,java,android,loops,opengl-es,sharedpreferences,Java,Android,Loops,Opengl Es,Sharedpreferences,我正在尝试使用SharedReferences来存储我的高分。每次我的级别结束时,它都会调用这个类并发送高分和上下文 为了计算分数的位置,我让它对照共享pref中的分数检查分数(总共6个) 我的问题是,当我有一个高分(NR1)时,它会自动将相同的分数复制到第二、第三、第四等位置。这与我的逻辑无关。它是否应该首先设置变量的值,然后在我的循环中使用这些变量? 以下语句仅在高分为nr 1时有效。其他的说法实际上是一样的 得分类,将从我的游戏类调用 import android.content.Cont

我正在尝试使用SharedReferences来存储我的高分。每次我的级别结束时,它都会调用这个类并发送高分和上下文

为了计算分数的位置,我让它对照共享pref中的分数检查分数(总共6个)

我的问题是,当我有一个高分(NR1)时,它会自动将相同的分数复制到第二、第三、第四等位置。这与我的逻辑无关。它是否应该首先设置变量的值,然后在我的循环中使用这些变量? 以下语句仅在高分为nr 1时有效。其他的说法实际上是一样的

得分类,将从我的游戏类调用

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;



public class Scores  {


private SharedPreferences mSharedPrefs;


public  void input(int i,Context a){

 int first=0;
  int second=0;
  int third=0;
  int fourth=0;
  int fifth=0;
  int sixth=0;



mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(a);

sixth=mSharedPrefs.getInt("scoresixth",0);
fifth=mSharedPrefs.getInt("scorefifth",0);  
fourth= mSharedPrefs.getInt("scorefourth",0);
third=mSharedPrefs.getInt("scorethird",0);
second=mSharedPrefs.getInt("scoresecond",0);
first = mSharedPrefs.getInt("scorefirst",0);



if (i>=first){
     SharedPreferences.Editor editor = mSharedPrefs.edit();


     editor.putInt("scoresixth",fifth);

     editor.putInt("scorefifth",fourth);

     editor.putInt("scorefourth",5);

     editor.putInt("scorethird",second);

     editor.putInt("scoresecond",first);

     editor.putInt("scorefirst",i);

      editor.commit();



}

}
现在是我游戏课的一部分,我称之为分数:

public class LevelOne extends GLGame {

    public Screen getStartScreen() {



    return new GameScreen(this);
    }
     class GameScreen extends Screen {
  Scores scorein=new Scores();     ...

 ...     if(score>1499){
          Assets.font.drawText(batchertwo, "    WINNER!!", -200,((1-9/0.4f)/1.5f)*dim);
            win=true;
           scorein.input(score, getApplicationContext());
编辑:我从OpenGL屏幕调用该类。不确定这是否会产生任何影响

上述问题已解决: 我从OpenGL屏幕中调用这个分数类。OpenGL屏幕的问题是它不断更新屏幕,因此不断调用所有这些更新的分数输入方法。 这就是为什么我在所有位置上都看到了自己的高分


我只是在OpenGL中创建一个布尔值,当它执行一次时,我将其设置为false/true。无需担心其他更新。它的工作方式前所未有

你检查过函数的输入了吗?(打印出来)是的,我在高分屏幕上调用SharedPref。当我硬编码分数时,比如说,99它工作得非常完美。这就是为什么我认为变量有问题。你在哪里硬编码99?“如果我硬编码,我硬编码为:editor.putin(“scoresond”,99);如果还有其他循环,问题可能就在那里