题目如下:
设计一程序,要求从控制台输入10个数字,使用冒泡排序并将结果输出,如何输入非数字程序需要给出友好提示,可以重新输入。
本题看起来很简单,仅仅是一个排序的问题,用二维循环写一个冒泡就好了,但是实际上关于友好的处理输入问题是比较麻烦的事情。
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int maxInput = 3; int num[] = new int[10]; System.err.println("this is error"); // 输入十个数字 for (int i= 0;i<10;i++){ ; boolean isOk=true;// 是否而合法 int inputTimes = 0; // 当前数字的输入次数 do { // 判断是否合法,最多允许错误三次 try{ System.out.println("请输入第" + (i +1 ) + "个数字:"); String strNum = scanner.next(); num[i] = Integer.parseInt(strNum); isOk=true; }catch (Exception ime){ inputTimes++; isOk=false; System.out.println("非法数字,请重新输入 "); if (inputTimes > maxInput){ System.out.println("错误次数太多。。。 ,退出程序!!!"); return; } } }while (!isOk); // 不合法要继续重新输入 } // 原数据打印 for (int i = 0; i < num.length ; i++) { System.out.println(num[i]); } // 排序 for (int i = 0; i < num.length; i++) { for (int j = 0; j < i; j++) { if (num[i]>num[j]){ int temp = num[i]; num[i]= num[j]; num[j]= temp; } } } // 排序号的数据打印 System.out.println("排序后的数据是:"); for (int i = 0; i < num.length ; i++) { System.out.println(num[i]); } } }