简体   繁体   English

使用Android Java的java.lang.NullPointerException

[英]java.lang.NullPointerException with Android Java

Apparently the problem is with line 62.If you comment that out then line 63 and so on. 显然问题在于第62行。如果您对第63行进行评论,依此类推。 I also tried a non array and it worked. 我也试过一个非数组,它的工作原理。

I cant see that any of the variables are nulled either. 我看不出任何变量也是无效的。 Logcat says the problem is: java.lang.NullPointerException . Logcat说问题是: java.lang.NullPointerException

Here is my code so far: 到目前为止,这是我的代码:

package com.zxz.zxcdnd;

import java.util.Random;
import android.os.Bundle;
import android.app.Activity;
import android.widget.*;

public class MainActivity extends Activity
{

    //Player statistics
    int playerStatistics[];

    //Room statistics
    String roomStatistics[];
    int type = 1;

    //Player inventory
    int inventorySlot = 1;
    int playerInventoryNumbers[];
    String playerInventoryNames[];
    String playerInventoryAffectedStats[];

    //Index representation variables
    int name = 1,roomsConquered = 2,goldCoins = 3,stamina = 4,damage = 5,luck = 6,difficulty=3;

    //Random generator
    Random r = new Random();
    int dice;

    //List of available items
    int itemNumbers[] = {1,1,2,2,3,3,4,4,5,5};

    String itemAffectedStats[] = {"stamina","damage",
                                  "luck","damage",
                                  "stamina","damage",
                                  "damage","luck",
                                  "damage","stamina"};

    String itemNames[] = {"lemon","app",
                                   "ist","Bms",
                                   "Hateech","Lasacsyrup",
                                   "Picagger","Hompa",
                                   "Bori","Offipenser"};

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Initialize important player variables
        startUp();

        //Create room
        initializeRoom();
    }

    void startUp()
    {
        //Initialize stamina, damage and luck
        playerStatistics[stamina] = r.nextInt(7-1) + 1; //LINE 62
        playerStatistics[damage] = r.nextInt(7-1) + 1; //LINE 63
        playerStatistics[luck] = r.nextInt(7-1) + 1;

        //Initialize player inventory
        playerInventoryNumbers[inventorySlot] = itemNumbers[r.nextInt(11-1) + 1];
        playerInventoryNames[inventorySlot] = itemNames[r.nextInt(11-1) + 1];
        playerInventoryAffectedStats[inventorySlot] = itemAffectedStats[r.nextInt(11-1) + 1];

        playerStatistics[damage] = playerStatistics[damage] + playerInventoryNumbers[inventorySlot];
        inventorySlot++;
    }

Thanks in advance! 提前致谢! I owe alot. 我欠了很多。

You declared but didn't initialize your playerStatistics array, so it's null . 你声明但没有初始化你的playerStatistics数组,所以它是null Try declaring it as: 尝试将其声明为:

int playerStatistics[] = new int[7];

or one more than your largest index possible. 或者比你最大的索引多一个。

You will need to do something similar with your other arrays, which also don't appear to be initialized. 您将需要执行与其他阵列类似的操作,这些阵列似乎也未初始化。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM