要求:輸入一個(gè)整數(shù)
一開始寫的錯(cuò)誤代碼:
public static void main(String[] args) {
??? int?n?=?0;
??? boolean?keeprunning?=?true;
??? System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
??? while(keeprunning)?{
??????? Scanner?input?=?new?Scanner(System.in);
??????? //判斷輸入的是不是一個(gè)整數(shù)
??????? if(!input.hasNextInt?||?input?==?null)?{
??????? System.out.println("您輸入的不是一個(gè)整數(shù)终佛,請(qǐng)重新輸入:");
??????? }
??????? //判斷輸入的數(shù)字是否大于0
??????? else?if(input.nextInt()?<?0)?{
??????? System.out.println("請(qǐng)重新輸入一個(gè)大于0的整數(shù):");
??????? }
??????? else?{
??????? n?=?input.nextInt();
??????? keeprunning?=?false;
??????? }
??? }
??? System.out.println(n);
}
這個(gè)代碼的錯(cuò)誤就是沒有把輸入的值存起來,然后邏輯比較亂
貼重新寫的代碼妓湘,用了一個(gè)try...catch來捕獲輸入不為整數(shù)的錯(cuò)誤查蓉,然后判斷是否大于0乌询,運(yùn)行成功
public static void main(String[] args) {
??? boolean keeprunning = true;
??? int n = 0;
??? System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
??? while(keeprunning) {
??????? try{
??????????? Scanner input = new Scanner(System.in);
?????????? ?n = input.nextInt();
?????????? ?if(n < 0) {
?????????????? ?System.out.println("輸入的數(shù)字小于0榜贴,請(qǐng)重新輸入:");
????????? ? }else {
??????????????? keeprunning = false;
??????????? }
??????????? }catch(Exception e) {
??????????? System.out.println("您輸入的數(shù)字有誤,請(qǐng)重新輸入:");
??????????? }
??? }
??? System.out.println(n);
}