我正在尝试进行国际象棋游戏,并且在某个时刻用户输入与他们想要移动的棋子相关的数字。我之前有一个简化版的代码,但我最近决定尝试一下'尝试'并且'赶上'用于捕获InputMismatchException的语句。这是代码:
int inputexception = 0;
do {
inputexception = 0;
try {
System.out.println("What piece would you like to move?");
pieceselectioninput = scan.nextInt();
} catch ( InputMismatchException e ){
inputexception = 1;
}
} while ( inputexception == 1 );
所以一旦我运行这个程序,如果我输入一个非Int值,它会一直重复,并且#34;你想要移动什么片段?"在屏幕上连续显示,直到我手动终止程序。
我做错了什么?在我添加“尝试”之前,它不是这样的。并且'赶上'短语。
答案 0 :(得分:1)
只要inputexception == 1
运行while循环,并在InputMismatchException的catch块中将inpuexception值设置为1。这使得每次键入非int值时循环都会继续。
答案 1 :(得分:0)
您的问题有两种解决方案:
保持nextInt
// Constructs the message
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String myPhoneNumber = mTelephonyMgr.getLine1Number();
String destNumber = taskManager.getHelpCenterNumber();
String message = getResources().getString(R.string.call_me_message) + " " + myPhoneNumber+".";
// Sends the message
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(destNumber, null, message, null, null);
直接使用带有解析的nextline语句:
08-03 09:59:10.548: E/AndroidRuntime(19825): FATAL EXCEPTION: main
08-03 09:59:10.548: E/AndroidRuntime(19825): Process: com.solarsquareretailer.view, PID: 19825
08-03 09:59:10.548: E/AndroidRuntime(19825): java.lang.NullPointerException: Attempt to get length of null array
08-03 09:59:10.548: E/AndroidRuntime(19825): at android.os.Parcel.readException(Parcel.java:1546)
08-03 09:59:10.548: E/AndroidRuntime(19825): at android.os.Parcel.readException(Parcel.java:1493)
08-03 09:59:10.548: E/AndroidRuntime(19825): at com.android.internal.telephony.ISms$Stub$Proxy.sendText(ISms.java:1428)
08-03 09:59:10.548: E/AndroidRuntime(19825): at android.telephony.SmsManager.sendTextMessage(SmsManager.java:305)
08-03 09:59:10.548: E/AndroidRuntime(19825): at com.solarsquareretailer.view.MainActivity.onOptionsItemSelected(MainActivity.java:245)