扫描程序跳过用户输入

时间:2015-08-03 07:53:33

标签: java exception java.util.scanner

我正在尝试进行国际象棋游戏,并且在某个时刻用户输入与他们想要移动的棋子相关的数字。我之前有一个简化版的代码,但我最近决定尝试一下'尝试'并且'赶上'用于捕获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;你想要移动什么片段?"在屏幕上连续显示,直到我手动终止程序。

我做错了什么?在我添加“尝试”之前,它不是这样的。并且'赶上'短语。

2 个答案:

答案 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)