程序的本体是,输入成绩,根据成绩评定等级。
但是如果用Scanner的nextInt,在控制台输入字符时,程序会崩溃,于是想办法判断输入的是否是数字,然后再进行评定。
程序如下:
package com.test.demo; import java.util.Scanner; public class TestOne { public static void main(String[] args) { // TODO Auto-generated method stub Scanner s = new Scanner(System.in); String str = null;//把str定义为全局变量,这样while循环结束后也可以使用 System.out.println("成绩评定:"); //第一次死循环用于保证成绩评级一直运行 while(true){ boolean cflag = true;//用于是否瑞出第二次死循环 while(cflag){//利用死循环判断输入的字符是否正确 int count = 0;//如果count=str.length,表名每个字符都是数字,于是可以退出 System.out.println("请输入成绩:"); str = s.nextLine();//从控制台获取字符串 char[] chs = str.toCharArray();//将字符串转为字符数组 for(int i = 0;i<chs.length;i++){//笨方法 //聪明方法是:if(str.matches(reqex:"[0-9]*")) if(!(chs[i]>=‘0‘&&chs[i]<=‘9‘)){ System.out.println("输入的格式有误,请重新输入:"); break; } count++; } if(count==str.length()){//全是数字了 cflag = false; } } Integer grade = Integer.parseInt(str);//把字符串转换为整型 System.out.println(grade); if(grade>95&&grade<=100) System.out.println("太棒了,您的成绩为:优秀"); else if(grade>70&&grade<=95) System.out.println("太棒了,您的成绩为:中等"); else if(grade>60&&grade<=70) System.out.println("太棒了,您的成绩为:合格"); else if(grade<=60&&grade>40) System.out.println("您的成绩不及格!"); else if(grade<=40&&grade>=0) System.out.println("抱歉你还是重新学习吧!"); else{ System.out.println("输入的成绩不和法,请重新输入:"); continue; } System.out.println("您是否想要退出?Y/N"); Scanner ys = new Scanner(System.in); String ex = ys.nextLine().toUpperCase();//把字符串转为大写 if(ex.equals("Y")){ System.out.println("好的,退出成功!"); break; } else{ continue; } } } }
原文:https://www.cnblogs.com/bkytep/p/9483277.html