我希望在按下#时显示随机生成的表达式,如2 + 3 =我已经实现了这段代码,但是当我按下它时,应用程序崩溃了。
我的xml代码是:
<TextView
android:id="@+id/randomNumberGen"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:textSize="45dp" />
Java代码是:
package org.example.question;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class QuestionActivity extends Activity implements View.OnClickListener {
/** Called when the activity is first created. */
int fnum, snum;
Button one,two,three,four,five,six,seven,eight,nine,zero,minus,hash;
TextView display;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Random myRandom = new Random();
display = (TextView)findViewById(R.id.randonNumberGen);
//Buttons
one= (Button) findViewById(R.id.keypad_1);
two= (Button) findViewById(R.id.keypad_2);
three= (Button) findViewById(R.id.keypad_3);
four= (Button) findViewById(R.id.keypad_4);
five = (Button) findViewById(R.id.keypad_5);
six= (Button) findViewById(R.id.keypad_6);
seven = (Button) findViewById(R.id.keypad_7);
eight = (Button) findViewById(R.id.keypad_8);
nine = (Button) findViewById(R.id.keypad_9);
minus = (Button) findViewById(R.id.keypad_subtract);
hash = (Button) findViewById(R.id.keypad_hash);
one.setOnClickListener(this); two.setOnClickListener(this); three.setOnClickListener(this);
three.setOnClickListener(this); four.setOnClickListener(this); five.setOnClickListener(this);
six.setOnClickListener(this); seven.setOnClickListener(this); eight.setOnClickListener(this);
nine.setOnClickListener(this); minus.setOnClickListener(this); hash.setOnClickListener(this);
}
public void onClick(View arg0) {
View v = null;
switch(v.getId()){
case R.id.keypad_hash:
display.setText(fnum+"+"+ snum+"=");
fnum = (int) ((double) ((Math.random() * 1000)) / 100.0);
snum = (int) ((double) ((Math.random() * 1000)) / 100.0);
break;
}
}
public void requestFocus() {
// TODO Auto-generated method stub
}
}
当我单击“#”按钮时,应用程序崩溃。有什么想法吗?
答案 0 :(得分:2)
View v = null;
switch(v.getId()){
你做不到。 v
是null
。请改为switch(arg0.getId())
。
display.setText(fnum+"+"+ snum+"=");
...在您生成随机数后。
答案 1 :(得分:1)
从您声明的代码
中确定int fnum, snum;
但在调用之前,它们未在代码中的任何位置设置:
display.setText(fnum+"+"+ snum+"=");
您可能会收到错误,但是没有日志/调试信息我无法告诉您。发布它们以确认这一点。
编辑:
在display.setText之后......然后设置值。您应该设置它们然后显示它们。
case R.id.keypad_hash:
fnum = (int) ((double) ((Math.random() * 1000)) / 100.0);
snum = (int) ((double) ((Math.random() * 1000)) / 100.0);
display.setText(fnum+"+"+ snum+"=");
break;
下一步编辑:
如果你对你创建的随机int不太挑剔,你可以做类似的事情:
Random random = new Random();
fnum = random.nextInt(100);
//nextInt(100) - upto the max value of 100
snum = random.nextInt(100);