Java 修复致命异常:主进程错误

Java 修复致命异常:主进程错误,java,android,Java,Android,我是一个使用Java和Android Studio的初学者,这段代码是一个点击鼹鼠游戏类项目的一部分。点击摩尔一定量会增加等级,之后可以作为高分提交。游戏将每个玩家的高分保存为一个生成的按钮,我遇到的问题是我必须按照达到的最高级别对高分进行排序。LevelArray包含玩家达到的最高级别,我正试图让他们处于一种状态,这样我就可以对生成的按钮进行排序。如果我的想法不起作用,有人能提供另一种方法来排序这些按钮吗?下面我包括了我的全局页面,即entercode hereh包含循环的页面,并包括了我在使

我是一个使用Java和Android Studio的初学者,这段代码是一个点击鼹鼠游戏类项目的一部分。点击摩尔一定量会增加等级,之后可以作为高分提交。游戏将每个玩家的高分保存为一个生成的按钮,我遇到的问题是我必须按照达到的最高级别对高分进行排序。LevelArray包含玩家达到的最高级别,我正试图让他们处于一种状态,这样我就可以对生成的按钮进行排序。如果我的想法不起作用,有人能提供另一种方法来排序这些按钮吗?下面我包括了我的全局页面,即
entercode here
h包含循环的页面,并包括了我在使用循环进入页面时收到的错误

错误

 FATAL EXCEPTION: main
Process: com.example.dellstudio.projectone, PID: 20875
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.dellstudio.projectone/com.example.dellstudio.projectone.page3}: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at java.util.Vector.arrayIndexOutOfBoundsException(Vector.java:907)
        at java.util.Vector.elementAt(Vector.java:328)
        at java.util.Vector.get(Vector.java:442)
        at com.example.dellstudio.projectone.global.getLevelArray(global.java:56)
        at com.example.dellstudio.projectone.page3.onCreate(page3.java:47)
        at android.app.Activity.performCreate(Activity.java:6237)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
具有循环条件的页面

 Button hs;
int numhold=0;
String namehold ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pagethree);
    hs = (Button)  findViewById(R.id.hsReturn);
    hs.setOnClickListener(sListener);

    LinearLayout l = (LinearLayout) findViewById(R.id.lay);




    global gN = (global)getApplication();



for (int i = 0; i < gN.getArray().size(); i++) {

    for (int j = 0; j < gN.getArray().size() - i; j++) {
        if (gN.getLevelArray(j) < gN.getLevelArray(j + 1)) {
                   /* numhold = gN.getLevelArray(j);
                    gN.levelArray.set(j, gN.getLevelArray(j + 1));
                    gN.levelArray.set(j + 1, numhold);
                    namehold = gN.getNameArray(j);
                    gN.nameArray.set(j, gN.getNameArray(j + 1));
                    gN.nameArray.set(j + 1, namehold);
                    */
        }
    }

}


    for (int i = 0; i < gN.getArray().size(); i++) {

        Button newButton = new Button(this);
        newButton.setId(i);
        newButton.setText(gN.getNameArray(i) + "    Level: " + gN.getLevelArray(i));
        newButton.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));


      //  if(gN.name.equals(gN.nameArray.get(i))) {
      //      newButton.setOnClickListener(userListener);
      //  }
        l.addView(newButton);
    }


}
按钮hs;
int numhold=0;
字符串名称保持;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.pagethree);
hs=(按钮)findViewById(R.id.hsReturn);
hs.setOnClickListener(sListener);
LinearLayout l=(LinearLayout)findViewById(R.id.lay);
全局gN=(全局)getApplication();
对于(int i=0;i
全球的

List<Integer> levelArray = new Vector();
List<String> nameArray = new Vector();




public String getName (){
    return this.name;
}

public void setName(String s){
    this.name = s;
}

public String getPass (){
    return this.pass;
}
public void setPass(String s){
    this.pass = s;
}



public String getAge (){
    return this.age;
}
public void setAge(String s){ this.age = s;
}

public Vector getArray (){return (Vector)this.nameArray;}
public String getNameArray (int i){return this.nameArray.get(i);}
public void setNameArray(String j){this.nameArray.add(j);}

public int getLevelArray (int i){return this.levelArray.get(i);}
public void setLevelArray(int i){this.levelArray.add(i);}
List levelArray=new Vector();
列表名称数组=新向量();
公共字符串getName(){
返回此.name;
}
公共void集合名(字符串s){
this.name=s;
}
公共字符串getPass(){
把这个还给我;
}
公共void setPass(字符串s){
this.pass=s;
}
公共字符串获取(){
返回这个年龄;
}
公共无效设置(字符串s){this.age=s;
}
公共向量getArray(){return(Vector)this.nameArray;}
公共字符串getNameArray(inti){返回this.nameArray.get(i);}
public void setNameArray(字符串j){this.nameArray.add(j);}
public int getLevelArray(int i){返回this.levelArray.get(i);}
public void setLevelArray(int i){this.levelArray.add(i);}

看起来您有两个数组,但将它们视为具有相同数量的元素


可能级别数组的子元素比名称数组少?

ComponentInfo{com.example.dellstudio.projectone/com.example.dellstudio.projectone.page3}:java.lang.ArrayIndexOutOfBoundsException
这是您的错误。问题是“if(gN.getLevelArray(j)