本帖最后由 FFF 于 2013-11-13 12:48 编辑
前排,先留名。再慢慢写!
题目1:- import java.util.Scanner;
- /*
- *需求:1.输入一个学生的成绩:例如 99,那么输出优。
- *2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
- *3.可以连续输入成绩,当输入over的时候,结束输入成绩
- */
- /*思路:看到这个题目,我第一个想到的就是用查表法来做。代码如下。
- *
- *
- */
- //声明一个类,用于处理传入的数据
- class studnt {
- // 声明一个用于接收成绩的变量
- int grade;
- // 声明一个数组,用于查表法
- String[] st = new String[] { "极差", "极差", "极差", "极差", "很差", "及格", "中等", "良",
- "优秀", "优秀", "极优" };
- // 声明一个构造函数,用于传入参数
- studnt(int grade) {
- this.grade = grade / 10;
- }
- // 声明一个空的构造函数,以免实例化时出错
- studnt() {
- }
- // 重写toString用于付出参数
- public String toString() {
- return st[grade];
- }
- }
- public class DemoTemp {
- // 入口
- public static void main(String[] args) {
- // 实例化studnt类,方便下面使用。
- studnt st = new studnt();
- // 实例Scanner用于输入
- Scanner sc = new Scanner(System.in);
- // 定一个标记,用于跳出循环
- boolean flag = false;
- // 由于是可重复输入的,所以用while当标记flag不为over时,一直运行下去。
- while (!flag) {
- // 因为可能存在输入非数字的情况,所以使用异常捕捉try,catch。怎么方便怎么来
- try {
- // 提示指令
- System.out.println("请输入您的学生成绩\n输入OVER退出");
- // 用于接收输入的数据
- String str = sc.next();
- // 先判断输入的数据是否是结束语句"OVER",是结束则跳出循环结束运行。
- if ((str.equals("OVER")) || (str.equals("over")))
- flag = true;
- // 否则进入下一个流程
- else {
- // 把输入的数据转为整数类型,不怕出错。出错有catch捕捉
- int s = Integer.parseInt(str);
- // 判断数字是否在要求的范围内
- if ((s > 0) && (s <= 100)) {
- // 是,则传入数据,并输入结果
- System.out.println(new studnt((s)));
- } else {
- // 否,则跳出提示。
- System.out.println("请输入0至100的数");
- }
- }
- }
- // 因为这里有try所以,只要用户输入的不是数字。会跳出提示。
- catch (Exception e) {
- System.out.println("输入错误!请重新输入。(请勿输入非整形数字以外的字符)");
- }
- }
- }
- }
复制代码 问题1:实现方法2- import java.util.Scanner;
- class studnt{
- //实现方法2 switch方法。与if,else方法一样的实现方法。我就不写if方法了。
- public void count(int grand){
- //把传入的数据处理一下。方法判断。
- grand=grand/10;
- //使用switch开始判断
- switch(grand){
- case 10:
- System.out.println("极优");
- break;
- case 9:
- System.out.println("优秀");
- break;
- case 8:
- System.out.println("优秀");
- break;
- case 7:
- System.out.println("良");
- break;
- case 6:
- System.out.println("中等");
- break;
- case 5:
- System.out.println("及格");
- break;
- case 4:
- System.out.println("很差");
- break;
- default:
- System.out.println("同学,明天叫你家长来一下学校!");
- }
- }
- }
- public class DemoTemp {
- public static void main(String[] args) {
- // 实例化studnt类,方便下面使用。
- studnt st = new studnt();
- // 实例Scanner用于输入
- Scanner sc = new Scanner(System.in);
- // 定一个标记,用于跳出循环
- boolean flag = false;
- // 由于是可重复输入的,所以用while当标记flag不为over时,一直运行下去。
- while (!flag) {
- // 因为可能存在输入非数字的情况,所以使用异常捕捉try,catch。怎么方便怎么来
- try {
- // 提示指令
- System.out.println("请输入您的学生成绩\n输入OVER退出");
- // 用于接收输入的数据
- String str = sc.next();
- // 先判断输入的数据是否是结束语句"OVER",是结束则跳出循环结束运行。
- if ((str.equals("OVER")) || (str.equals("over")))
- flag = true;
- // 否则进入下一个流程
- else {
- // 把输入的数据转为整数类型,不怕出错。出错有catch捕捉
- int s = Integer.parseInt(str);
- // 判断数字是否在要求的范围内
- if ((s > 0) && (s <= 100)) {
- // 是,则传入数据,并输入结果
- st.count(s);
- } else {
- // 否,则跳出提示。
- System.out.println("请输入0至100的数");
- }
- }
- }
- // 因为这里有try所以,只要用户输入的不是数字。会跳出提示。
- catch (Exception e) {
- System.out.println("输入错误!请重新输入。(请勿输入非整形数字以外的字符)");
- }
- }
- }
- }
复制代码 题目2:- /*
- * 需求:从控制台字符串,将输入的字符串中的小写字母转换成大写字母,
- * 大写字母转换成小写字母,数字转换成#符号。
- *
- *
- * 思路:把输入的字符,一个个拆开来判断。是否为字符或数字。是则进行转换。否则跳出提示。
- * 判断可以通过把String转换为Char来判断。
- * 最后把转换后的字符输出。
- *
- */
- public class DemoCase {
- // 定下标点,当输入的数据中含有非字母与数字时。跳出循环。
- static boolean flag = false;
- // 入口
- public static void main(String[] args) throws Exception {
- // 输入数据
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- System.out.println("请输入要转换的字符、按回车键结束");
- // 因为是字符与数字混合,所以用String类型
- String x = br.readLine();
- // 声明一个数字点,用到while计算
- int flagOne = 0;
- // 声明一个char用于把转入的数据的储存,方便于使用char方法
- char k;
- // 声明一个用于输出的String
- String arr = "";
- // 建立while循环,条件为:当数字标点小于输入的字符长度时,无限的运行下去。
- while ((flagOne < x.length()) && !flag) {
- // 取一个字符,用于转换。一个一个来转换
- k = x.charAt(flagOne);
- // 调用转换的方法
- k = shift(k);
- // 标点,加1。转换完一个,就加1
- flagOne++;
- // 把转换出来的字符集合起来。用于转换完后的输出
- arr = arr + k;
- }
- // 当转换出来的倒是字母与数字时,才输出。
- if (!flag)
- // 输出语句
- System.out.println(arr);
- }
- // 用于转换的方法,接收一个char类型的数据。
- static char shift(char s) {
- // 判断是否为大写,是则换为小写字母
- if (s <= 'Z' && s >= 'A')
- // 转换大小写语句
- s = Character.toLowerCase(s);
- else
- // 判断是否为小写。是则换成大写字母
- if (s <= 'z' && s >= 'a')
- // 小写转换成大写的语句
- s = Character.toTitleCase(s);
- else
- // 如果以上都不是,则判断是否为数字,是则转换成“#”字符
- if (s <= 57 && s >= 48)
- s = '#';
- // 如果不是字母,也不是数字。则提示错误。结束程序
- else {
- // 输出提示
- System.out.println("输入错误,程序结束。输入的字符只能包含数字和字母。");
- // 把标点改为true。让上面的while跳出循环
- flag = true;
- }
- // 返回s。用于累加
- return s;
- }
- }
复制代码 |