我得到一个空指针异常在我的code.Please帮我解决它。这是我的代码。
package com.example.game;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class GuessActivity extends ListActivity implements OnClickListener
{
EditText GNum;
Button nxt;
int[] a = new int[4];
int[] d = new int[4];
int[] b = {0,0,0,0,0,0,0,0};
int[] c = {0,0,0,0,0,0,0,0};
int[] x = new int[8];
int t = 0;
String [] gN = new String[8];
String [] gB = new String[8];
String [] gC = new String[8];
ListAdapter adapter;
/*ArrayList<HashMap<String, String>> output = new ArrayList<HashMap<String, String>>();
HashMap<String, String> out = new HashMap<String, String>();*/
//String KEY_NUM = "1" , KEY_BULLS="2" , KEY_COWS="3";
private class list
{
TextView guess;
TextView bulls;
TextView cows;
}
list lv = null;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.guess_activity);
GNum = (EditText) findViewById(R.id.etGuessNum);
nxt = (Button) findViewById(R.id.btNxt);
int y = getIntent().getExtras().getInt("num");
for(int i=0;i<4;i++)
{
a[i] = y%10;
y = y/10;
}
/*adapter = new SimpleAdapter(this,output,R.layout.list_item,
new String[]{KEY_NUM , KEY_BULLS , KEY_COWS},new int[]{
R.id.tvGuessNum , R.id.tvBulls , R.id.tvCows});*/
nxt.setOnClickListener(this);
GNum.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
if(v.getId() == R.id.btNxt)
{
t++;
if(t>8)
{
Toast.makeText(getApplicationContext(), "You Lost the Game",
Toast.LENGTH_SHORT).show();
return;
}
else
{
gN[t-1] = GNum.getText().toString();
int l = gN[t-1].length();
if(l!=4)
{
Toast.makeText(getApplicationContext(),"Number should be of 4 digits",
Toast.LENGTH_LONG).show();
return;
}
else
{
x[t-1] = Integer.parseInt(gN[t-1]);
for(int i=0;i<4;i++)
{
d[i] = x[t-1]%10;
x[t-1] = x[t-1]/10;
}
if(d[0] == a[0])
b[t-1]++;
if(d[0] == a[1] || d[0] == a[2] || d[0] == a[3])
c[t-1]++;
if(d[1] == a[1])
b[t-1]++;
if(d[1] == a[0] || d[1] == a[2] || d[1] == a[3])
c[t-1]++;
if(d[2] == a[2])
b[t-1]++;
if(d[2] == a[1] || d[2] == a[0] || d[2] == a[3])
c[t-1]++;
if(d[3] == a[3])
b[t-1]++;
if(d[3] == a[1] || d[3] == a[2] || d[3] == a[0])
c[t-1]++;
if(b[t-1] == 4)
{
Toast.makeText(getApplicationContext(), "You Win",
Toast.LENGTH_SHORT).show();
return;
}
gB[t-1] = Integer.toString(b[t-1]);
gC[t-1] = Integer.toString(c[t-1]);
lv = new list();
lv.guess = (TextView) findViewById(R.id.tvGuessNum);
lv.bulls = (TextView) findViewById(R.id.tvBulls);
lv.cows = (TextView) findViewById(R.id.tvCows);
lv.guess.setText(gN[t-1]);
lv.bulls.setText(gB[t-1]);
lv.cows.setText(gC[t-1]);
/*out.put(KEY_NUM, gN[t-1]);
out.put(KEY_BULLS ,String.valueOf(b[t-1]));
out.put(KEY_COWS , String.valueOf(c[t-1]));
output.add(t-1 , out);
setListAdapter(adapter);*/
}
}
}
else if(v.getId()==R.id.etGuessNum)
{
GNum.setText("");
}
}
}
这是我的原木猫。
03-08 02:58:55.760: E/AndroidRuntime(861): FATAL EXCEPTION: main
03-08 02:58:55.760: E/AndroidRuntime(861): Process: com.example.game, PID: 861
03-08 02:58:55.760: E/AndroidRuntime(861): java.lang.NullPointerException
03-08 02:58:55.760: E/AndroidRuntime(861): at com.example.game.GuessActivity.onClick(GuessActivity.java:138)
03-08 02:58:55.760: E/AndroidRuntime(861): at android.view.View.performClick(View.java:4438)
03-08 02:58:55.760: E/AndroidRuntime(861): at android.view.View$PerformClick.run(View.java:18422)
03-08 02:58:55.760: E/AndroidRuntime(861): at android.os.Handler.handleCallback(Handler.java:733)
03-08 02:58:55.760: E/AndroidRuntime(861): at android.os.Handler.dispatchMessage(Handler.java:95)
03-08 02:58:55.760: E/AndroidRuntime(861): at android.os.Looper.loop(Looper.java:136)
03-08 02:58:55.760: E/AndroidRuntime(861): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-08 02:58:55.760: E/AndroidRuntime(861): at java.lang.reflect.Method.invokeNative(Native Method)
03-08 02:58:55.760: E/AndroidRuntime(861): at java.lang.reflect.Method.invoke(Method.java:515)
03-08 02:58:55.760: E/AndroidRuntime(861): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-08 02:58:55.760: E/AndroidRuntime(861): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-08 02:58:55.760: E/AndroidRuntime(861): at dalvik.system.NativeStart.main(Native Method)
第138行为点击法-
可能是您的<代码>lv。bulls为null
。请确保布局中有id
=tvBulls
(区分大小写)的TextView
。
可能是因为您没有在任何地方实例化lv
。它在开始时初始化为null,在第138行使用相同的值。
主要内容:到底使用字符数组还是字符串常量C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《 C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: 运行结果: https://www.xnip.cn https://www.xnip.cn 字符数组归根结底还是一个数组,上节讲到的关于 指针和数组的规则同样也适用于字符数组。更改上面的代码,使用指针的方式来输出字符串: 运行结果: https://ww
问题内容: 我的应用程序接受来自的指针。 例如 如何使用该指针并获取存储在该位置的值? 问题答案: 免责声明:您可能已经知道,这很危险,如果要在生产应用程序中执行此操作,则最好有一个很好的理由。话虽如此… 您需要做一些事情。这是代码,然后我们将逐步进行介绍。 您可以在Go Playground上运行它。 首先,我们需要将字符串解析为数值。在您的示例中,您给出了一个十六进制数,因此我们将以16为底进
问题内容: 如何将类型中的字符串指针的引用值设置为空字符串?考虑以下示例: 我尝试了和运算符的所有组合都无济于事: 显然其中一些很愚蠢,但我没有发现尝试的危害。我也尝试使用和: 这会导致编译错误 恐慌:反映:使用不可寻址的值reflect.Value.SetString 我假设这是因为Go中的字符串是不可变的? 问题答案: 字符串文字不可寻址。 取包含空字符串的变量的地址: 或使用新的:
它是从哪里来的?
问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于