黑马程序员技术交流社区
标题: -----------------答题活动:成绩等级与字符串---------------------- [打印本页]
作者: 杨增坤 时间: 2013-11-12 21:36
标题: -----------------答题活动:成绩等级与字符串----------------------
本帖最后由 杨增坤 于 2013-11-17 16:44 编辑
此活动结束了,大家有不懂的地方可以参考一下其他人的代码,现在大家可以查看了!
第一题
学生成绩分为四个等级:90~100:优,80~89:良,70~79:中,60~69:及格,0~60:不及格。
要求:
1.输入一个学生的成绩:例如 99,那么输出优。
2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
3.可以连续输入成绩,当输入over的时候,结束输入成绩
第二题
从控制台字符串,将输入的字符串中的小写字母转换成大写字母,大写字母转换成小写字母,数字转换成#符号。
要求:
1.输入的必须只能包含数字和字母。
2.输出的要求要清晰明了。
例如:abd12AN45Ngk
转换后的是:
ABD##an##nGK
注意:
1.要使用注释把程序清晰的呈现出来。
2.要把每个步骤的思路写出来。
3.提交程序要注意排版或者打包。例如:张三.zip
4.不要重复回帖。
评分要求:
第一题:3分
第二题:2分。
要把所有功能全部实现,最好能使用多种方法来实现,做的完善的给满分,不完善的会根据做的程序给相应的分值。希望大家赶快行的起来吧,技术分在等着您呢。
相信自己都是最棒的!!
截止时间为本周日
作者: FFF 时间: 2013-11-12 21:43
本帖最后由 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;
- }
- }
复制代码
作者: Rockray 时间: 2013-11-12 21:48
占个楼明天写可以吗
作者: 零下五度的水 时间: 2013-11-12 23:12
以上纯属废话,因为不能少于10个字。。
-
-
零下五度的水.zip
1.52 KB, 下载次数: 107
作者: zhanghuxin 时间: 2013-11-12 23:21
答题活动:成绩等级
-
-
张虎新.zip
813 Bytes, 下载次数: 78
答题活动:成绩等级
作者: ysunday 时间: 2013-11-12 23:48
- import java.util.*;
- public class GradeRank{
- public static void main(String[] args){
- //scan to get the input number
- Scanner scan = new Scanner(System.in);
- //set a string to accept the input string
- String grade = null;
- while(true){
- sop("please input a num");
- //get the input string
- grade = scan.next();
- if(grade.equals("over"))//if the string is over,exit
- break;
- String reg = "\\d+";
- //judge if no input or format is wrong
- if(grade != null && grade.matches(reg))
- try{
- //rank the grade
- rank(Integer.valueOf(grade));
- }catch(Exception e){
- //print the exception
- sop(e.toString());
- }
- else{
- sop("please input the right format");
- sop("");
- continue;
- }
- sop("");
- }
- }
- public static void rank(int grade) throws Exception{
- //handle the num from large to small
- if(grade > 100){
- //throw exception
- throw new Exception("out the range");
- }else if(grade >= 90){
- //judge and print if grade is you
- sop(grade + ": excellent");
- }else if(grade >= 89){
- //judge and print if grade is liang
- sop(grade + ": good");
- }else if(grade >= 79){
- //judge and print if grade is zhong
- sop(grade + ": juts so so");
- }else if(grade >= 60){
- //failed
- sop(grade + ": just pass");
- }else{
- sop("failed");
- }
- }
- // a method to print
- public static void sop(Object obj){
- System.out.println(obj);
- }
- }
复制代码
2题- import java.util.*;
- public class ChangeCase{
- public static void main(String[] args) throws Exception{
- //scan to get the input
- Scanner scan = new Scanner(System.in);
- //set a string to accept the input string
- String s = scan.next();
- //print the string
- System.out.println(s);
- //print new string
- System.out.println(changeCase(s));
- }
- //the method to changeCase
- public static String changeCase(String s) throws Exception{
- //new string to store new string
- String news = "";
- //regex to judge if the sting is in right format
- String reg = "\\w+";
- if(!s.matches(reg)){//if not throw Exception
- throw new Exception("wrong format!");
- }
- //to change the string
- for(int x = 0; x < s.length(); x++){
- //get the char at index x
- char c = s.charAt(x);
- //judge if the number
- if(c >= '0' && c <= '9')
- //change to "#"
- news += "#";
- //judge if upcase
- else if(c >= 'A' && c <= 'Z')
- //change to lowcase
- news += (char)(c + 32) + "";
- //judge if lowcase
- else if(c >= 'a' && c <= 'z')
- //change to upcase
- news += (char)(c - 32) + "";
- }
- //return new string
- return news;
- }
- }
复制代码
谢谢版主的阅览!
作者: To 时间: 2013-11-13 00:29
支持!!!
作者: 七道 时间: 2013-11-13 01:09
上传压缩包都要输入字符,所以乱写
-
-
example.zip
5.31 KB, 下载次数: 88
作者: 简★零度 时间: 2013-11-13 02:30
第一题.rar
(921 Bytes, 下载次数: 2)
作者: Θ动@咚Θ 时间: 2013-11-13 03:46
给自己加油!
-
-
邢栋.zip
1.59 KB, 阅读权限: 100, 下载次数: 1
作者: 残影 时间: 2013-11-13 09:27
交卷期限呢?
作者: 秦大忠 时间: 2013-11-13 10:28
坤哥,麻烦你看看了
-
-
秦大忠.zip
2.25 KB, 下载次数: 84
作者: 赵晓海 时间: 2013-11-13 10:40
本帖最后由 赵晓海 于 2013-11-13 12:47 编辑
做的第一个,第二个基础测试上做过,不好意思传做过的。
更新了一下,把第二个也传上去了
-
-
bbs.zip
6.29 KB, 下载次数: 107
作者: ∏艾力克斯※ 时间: 2013-11-13 12:17
本帖最后由 ∏艾力克斯※ 于 2013-11-13 12:21 编辑
第一题:- /**
- * 学生成绩分为四个等级:90~100:优,80~89:良,70~79:中,60~69:及格,0~60:不及格。
- *
- * 要求: 1.输入一个学生的成绩:例如 99,那么输出优。
- *
- * 2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
- *
- * 3.可以连续输入成绩,当输入over的时候,结束输入成绩
- */
- private static Scanner input = new Scanner(System.in);
- public static void main(String[] args) {
- inputStuScore();//输入成绩
- }
-
- public static void inputStuScore() {
- while (true) {
- System.out.print("请输入学生成绩:");
- String answer = input.next();// 接受输入
- if (answer != null && answer.equals("over")) {
- System.out.println("退出系统!");
- break;// 退出
- }
- showStuScore(answer);// 处理指令
- }
- }
- /**
- * 学生分数判定
- *
- * @param answer
- */
- public static void showStuScore(String answer) {
- int score = 0;// 学生成绩
- boolean isInt = false;// 是Int吗?
- try {
- score = Integer.valueOf(answer);// 学生成绩赋值
- isInt = true;
- } catch (Exception e) {
- System.out.println("不是数字!请重新输入!");
- return;
- }
- if (isInt) {
- String rank = "";
- // 判定学生等级,和错误分数
- if (score < 0) {
- System.out.println("分数低于0,无效");
- return;
- } else if (score > 100) {
- System.out.println("分数高于100,无效");
- return;
- }
- if (score < 60 && score >= 0) {
- rank = "不及格";
- } else if (score <= 69 && score >= 60) {
- rank = "及格";
- } else if (score <= 79 && score >= 70) {
- rank = "中";
- } else if (score <= 89 && score >= 80) {
- rank = "良";
- } else if (score >= 90) {
- rank = "优";
- }
- System.out.println("当前学生等级是:" + rank);
- }
- }
复制代码 第二题:- private static Scanner input = new Scanner(System.in);
- public static void main(String[] args) {
- changeStr();
- }
- /**
- * 从控制台字符串,将输入的字符串中的小写字母转换成大写字母,大写字母转换成小写字母,数字转换成#符号。 要求: 1.输入的必须只能包含数字和字母。
- * 2.输出的要求要清晰明了。 例如:abd12AN45Ngk 转换后的是: ABD##an##nGK
- */
- public static void changeStr() {
- System.out.println("请输入字符串:");
- String value = input.next();
- System.out.println("我们用char字符对应的ASCII码来解决这个问题:");
- int start = 'a';
- int end = 'z';
- System.out.println("a~z的ASCII的范围是:" + start + "~" + end);
- start = 'A';
- end = 'Z';
- System.out.println("A~Z的ASCII的范围是:" + start + "~" + end);
- System.out.println("我们可以知道,两者之间是带有一个规律的,例如:");
- char a = 'a';
- char A = (char) (a - ('a' - 'A'));
- System.out.println("一个小写字符转换为大写:" + A);
- System.out.println("由此可知,两者之间的规律为,小写字母的ascii码比大写字母的ascii码大" + (a - A));
- System.out.println("我们根据ASCII码表可以知道,数字0~9的范围是:48~57");
- char[] chars = value.toCharArray();// 转换成char数组
- for (int i = 0; i < chars.length; i++) {
- if (chars[i] >= 65 && chars[i] <= 90) {// 大写字符ASCII码区间
- chars[i] += 32;
- } else if (chars[i] >= 97 && chars[i] <= 122) {// 大写字符ASCII码区间
- chars[i] -= 32;
- } else if (chars[i] >= 48 && chars[i] <= 57) {// 数字ASCII码区间
- chars[i] = '#';
- }
- }
- String str = new String(chars);
- System.out.println("处理完成后的字符是:" + str);
- }
复制代码
作者: 。。。。。。。 时间: 2013-11-13 13:17
见附件!
-
-
题二.zip
1.06 KB, 下载次数: 63
题目一项目
-
-
题一.zip
1.1 KB, 下载次数: 96
题目二项目
作者: 龏鈊づ廱鵆ぐ 时间: 2013-11-13 13:48
顶!!!~
作者: pireteMrZ 时间: 2013-11-13 13:53
完成{:soso_e113:}
-
-
刘晓东-云7.zip
4.95 KB, 阅读权限: 100, 下载次数: 1
作者: 王雨神 时间: 2013-11-13 13:53
王瑞亚stringTest.zip
(7.14 KB, 下载次数: 1)
作者: wuchuang1992 时间: 2013-11-13 14:00
wuchuang1992
-
-
wuchuang1992.rar
1.32 KB, 阅读权限: 30, 下载次数: 1
作者: 中关村阿旺 时间: 2013-11-13 14:02
javaee+安卓
-
-
苏国旺.zip
7.23 KB, 阅读权限: 100, 下载次数: 1
论坛兄弟交流群中说的java+android也可以回答,没问题吧?
作者: 天ya~_琼楼 时间: 2013-11-13 15:02
新手,第一次参加这类活动,望不吝指正!谢谢!
-
-
梁程峰Test.zip
6.17 KB, 阅读权限: 100, 下载次数: 2
答题活动
作者: 简★零度 时间: 2013-11-13 15:09
第二题.rar
(729 Bytes, 下载次数: 32)
作者: 龏鈊づ廱鵆ぐ 时间: 2013-11-13 15:18
刚才顶了一个。。。sorry
这是程序..
-
-
Test.rar
4.32 KB, 下载次数: 53
作者: 低调的奢华 时间: 2013-11-13 16:00
{:soso__10372570484069073532_4:} 同学辛苦了!
-
-
王锐军.zip
2.23 KB, 下载次数: 76
作者: 青年黨衛軍 时间: 2013-11-13 16:41
求撒分~~~求撒分~~~我还差5分~~~
-
-
GradeAndString.zip
10.95 KB, 下载次数: 55
作者: 繁华终成泣 时间: 2013-11-13 17:53
第一题:- package cn.djb.string;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Test1 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- System.out.println("请输入成绩:0~100");
- BufferedReader br = null;
- try{
- //创建一个与键盘录入有关的输入流
- br = new BufferedReader(new InputStreamReader(System.in));
- //读取键盘录入数据
- String line = null;
- while((line=br.readLine())!=null){
- //判断程序结束标记
- if("over".equals(line.trim()))
- System.exit(0);
- //判断输入的数据是否符合规则
- if(!line.matches("\\d{1,3}")||Integer.parseInt(line)>100){
- System.out.println("输入的成绩格式不正确");
- continue;
- }
- //将成绩转成int型并判断并输出成绩信息
- int grade = Integer.parseInt(line);
- if(grade<60)
- System.out.println("不及格");
- else if(grade<70)
- System.out.println("及格");
- else if(grade<80)
- System.out.println("中");
- else if(grade<90)
- System.out.println("良");
- else
- System.out.println("优");
-
- }
- }catch (Exception e) {
- e.printStackTrace();
- }finally{//释放流资源
- if(br!=null)
- try {
- br.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
复制代码 第二题:- package cn.djb.string;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Test2 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- BufferedReader br = null;
- try{
- //创建一个与键盘录入有关的输入流
- br = new BufferedReader(new InputStreamReader(System.in));
- //读取键盘录入数据
- String line = null;
- while((line=br.readLine())!=null){
- //判断程序结束标记
- if("over".equals(line.trim()))
- System.exit(0);
- //判断输入的数据是否符合规则
- if(!line.replaceAll("[^a-zA-Z0-9]", "1").equals(line)){
- System.out.println("输入的数据必须只能包含数字和字母");
- continue;
- }
- //符合规则后先将所有数字替换成#
- line = line.replaceAll("\\d", "#");
-
- //将替换后的字符串转成插入char[]数组,遍历并将其转成String进行正则判断后将其转换存入StringBuilder中
- char[] chars=line.toCharArray();
- StringBuilder sb = new StringBuilder();
- for(char ch : chars){
- String s=String.valueOf(ch);
- if(s.matches("[a-z]"))
- sb.append(s.toUpperCase());
- else if(s.matches("[A-Z]"))
- sb.append(s.toLowerCase());
- else
- sb.append(s);
- }
- //输出StringBuilder中的数据
- System.out.println(sb.toString());
- }
- }catch (Exception e) {
- e.printStackTrace();
- }finally{//释放流资源
- if(br!=null)
- try {
- br.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- }
- }
复制代码
作者: ゞ心痛-τ._煩離 时间: 2013-11-13 19:48
Desktop.zip
(1.31 KB, 下载次数: 42)
作者: heke 时间: 2013-11-13 22:52
第二题- package heima.test;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- /*第二题
- 从控制台字符串,将输入的字符串中的小写字母转换成大写字母,大写字母转换成小写字母,数字转换成#符号。
- 要求:
- 1.输入的必须只能包含数字和字母。
- 2.输出的要求要清晰明了。
- 例如:abd12AN45Ngk
- 转换后的是:
- ABD##an##nGK
- */
- public class Test2 {
- public static void main(String[] args) {
- Test2 t=new Test2();
-
- //得到输入的字符串
- String str=t.getString();
-
- //改变字符串格式
- str=t.changeStyle(str);
-
- System.out.println(str);
-
- }
- public String changeStyle(String str) {
- //把字符串转换为数组,在每个字母进行改变
- char[] ch=str.toCharArray();
- for(int i=0;i<ch.length;i++){
- //小写改为大写
- if(ch[i]>96){
- ch[i]-=32;
- }
- //数字改为#
- else if(ch[i]>=48&&ch[i]<=58)
- {
- ch[i]='#';
- }
- //大写改为小写
- else
- {
- ch[i]+=32;
- }
- }
- //把数组转换为String返回
- return String.valueOf(ch);
- }
- public String getString() {
-
- System.out.println("请输入字符串(只能包含数字和字母)");
- //获取键盘录入对象,InputStreamReader,将字节流对象转成字符流对象
- //BufferedReader,为了提高效率,将字符串进行缓冲区技术高效操作
- BufferedReader bufr =
- new BufferedReader(new InputStreamReader(System.in));
- String line = null;
- try {
- //一行的读入数据
- while((line=bufr.readLine())!=null)
- {
- //用正则判断是不是只包含数字和字母
- String regex="[a-zA-Z0-9]+";
- if(!line.matches(regex))
- {
- System.out.println("只能包含数字和字母,请重新输入");
- continue; //输入错误重新输入
- }
- break;
-
- }
- //处理输入异常
- } catch (IOException e) {
-
- e.printStackTrace();
- }finally{
- //关闭流操作
- if(bufr!=null){
-
- try {
- bufr.close();
- } catch (IOException e) {
-
- e.printStackTrace();
- }
- }
-
- }
- //把得到的集合转换为组
-
- return line;
- }
- }
复制代码
作者: 小痞痞 时间: 2013-11-13 23:12
- import java.util.Scanner;
- public class Test1 {
-
- /**
- * 学生成绩分为四个等级:90~100:优,80~89:良,70~79:中,60~69:及格,0~60:不及格。
- 要求:
- 1.输入一个学生的成绩:例如 99,那么输出优。
- 2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
- 3.可以连续输入成绩,当输入over的时候,结束输入成绩
- */
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in); //建立键盘输入对象
- while(true) {
- System.out.println("请输入你的成绩:"); //提示
- String line = sc.nextLine(); //将键盘录入的出入line变量中
- if("over".equals(line)) { //当遇到over时
- break; //退出
- }
- try {
- int temp = Integer.parseInt(line); //将得到的字符串转换为Integer对象
- method(temp); //调用method方法
- } catch (NumberFormatException e) { //如果转换出错证明输入的不是整数
- System.out.println("你输入的不是整数,请输入整数"); //提示
- }
- }
- sc.close(); //关闭流对象
- }
-
- private static void method(int i) {
- if(i >= 0 && i <= 100) { //如果输入的数字在0~100之间就执行下列操作
- switch(i/10) { //去掉数字的个位数找他十位数对应的值并输出
- case 6: //60~69:及格
- System.out.println("恭喜你及格了。");
- break;
- case 7: //70~79:中
- System.out.println("恭喜你的成绩为中等。");
- break;
- case 8: //80~89:良
- System.out.println("恭喜你此次的成绩为良");
- case 9:
- case 10: //90~100:优
- System.out.println("恭喜你获得了优。");
- break;
- default: //0~60:不及格
- System.out.println("你此次考试不及格");
- break;
- }
- } else { //如果输入的数不再0~100之间给以提示
- System.out.println("请输入正确的成绩:0~100");
- }
- }
- }
复制代码
作者: 星星Fighting 时间: 2013-11-14 00:33
请楼主查看,谢谢!
-
-
徐星星.rar
6.73 KB, 下载次数: 33
作者: gh112233 时间: 2013-11-14 00:36
成绩登记代码:
public class Test01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//给定s1为空字符,便于后面循环赋值;
String s1= "";
//一个循环。当输入的为over时结束循环,即不能在输入成绩了
do{
//提示输入成绩
System.out.print("请输入成绩:");
//实例化scanner对象,用于获取输入的字符串
Scanner scanner= new Scanner(System.in);
//获取输入的字符串
s1= scanner.next();
//判断类型是否为int类型
try {
int i = Integer.parseInt(s1);
getNum(i);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("输入的不是整数!");
}
}while(!(s1.equals("over")));
}
public static void getNum(int i){
//判断i的大小是否超出范围
if(i>=0&&i<=100){
//判断成绩等级
if(i<=100&&i>=90){
System.out.println("优");
}else if(i>=80&&i<=89){
System.out.println("良");
}else if(i>=70&&i<=79){
System.out.println("中");
}else if(i>=60&&i<=69){
System.out.println("及格");
}else{
System.out.println("不及格");
}
}else{
System.out.println("成绩超出范围!");
}
}
}
字符串代码:
public class Test02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入字符串:");
Scanner scanner= new Scanner(System.in);
String s=scanner.next();
//System.out.println(s.length());
//定义 一个int类型的参数来获取字符串每个元素的char值的ASCII码值
int changetemp;
//定义一个char类型的参数用来设定获取每个字母将其转换后的字母
char changechar;
for (int i = 0; i <s.length(); i++) {
char tochar=s.substring(i, i+1).charAt(0);
//定义tochartemp来获取每个字母的ASCII值
int tochartemp=tochar;
if(tochartemp>=48&&tochartemp<=57){
System.out.print("#");
}else if(tochartemp<=96&&tochartemp>=65){
//将获取的字母转换成小写字母
changetemp=tochar+32;
//转换成char类型用于输出
changechar=(char)changetemp;
// System.out.print(changetemp);
System.out.print(changechar);
}else{
//将获取的字母转换成大写字母
changetemp=tochar-32;
//转换成char类型用于输出
changechar=(char)changetemp;
// System.out.print(changetemp);
System.out.print(changechar);
}
}
}
}
作者: 张鹏 时间: 2013-11-14 01:46
成绩等级与字符串解答
-
-
张鹏.zip
1.44 KB, 阅读权限: 100, 下载次数: 4
作者: 星星Fighting 时间: 2013-11-14 14:37
供版主查看
-
-
徐星星.rar
6.73 KB, 阅读权限: 100, 下载次数: 1
只供版主查看
作者: 轩辕迪卡 时间: 2013-11-14 14:56
刘朋鑫提交作业
-
-
刘朋鑫.zip
9.57 KB, 阅读权限: 100, 下载次数: 1
作者: linjl_ll 时间: 2013-11-14 15:30
仅使用一种方法实现的
-
-
linjl_ll.zip
2.29 KB, 阅读权限: 255, 下载次数: 2
作者: qq316525598 时间: 2013-11-14 20:31
希望满意
-
-
师寒清.zip
8.76 KB, 阅读权限: 100, 下载次数: 1
作者: qq316525598 时间: 2013-11-14 20:34
努力解决
-
-
师寒清.zip
8.76 KB, 阅读权限: 100, 下载次数: 4
作者: 秦桂胜 时间: 2013-11-14 21:08
- import java.io.*;
- public class Test1 {
- /**从控制台字符串,将输入的字符串中的小写字母转换成大写字母,大写字母转换成小写字母,数字转换成#符号。
- * 要求:
- * 1.输入的必须只能包含数字和字母。
- * 2.输出的要求要清晰明了。
- * 例如:abd12AN45Ngk
- * 转换后的是:
- * ABD##an##nGK
- *
- * 思路:
- * 1、用System,in设定控制台输入
- * 2、创建一方法实现小写变大写,大写变小写,数字变#,(用正则表达式)
- */
- public static void main(String[] args) {
-
- BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));
- while (true){
- System.out.print("请输入只能包含数字和字母的字符串:");
- String s;
- try {
- s = bur.readLine();
- getString(s);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
- }
- private static void getString(String s) {
- char[] arr = s.toCharArray();
- StringBuffer sb = new StringBuffer();
- for (char c : arr) {
- if (c >= '0' && c <= '9') {
- sb.append("#");
- } else if (c >= 'a' && c <= 'z') {
- sb.append(String.valueOf(c).toUpperCase());
- } else if (c >= 'A' && c <= 'Z') {
- sb.append(String.valueOf(c).toLowerCase());
- }
- }
- System.out.println(sb.toString());
- }
-
- }
复制代码- import java.io.*;
- public class Test1 {
- /**从控制台字符串,将输入的字符串中的小写字母转换成大写字母,大写字母转换成小写字母,数字转换成#符号。
- * 要求:
- * 1.输入的必须只能包含数字和字母。
- * 2.输出的要求要清晰明了。
- * 例如:abd12AN45Ngk
- * 转换后的是:
- * ABD##an##nGK
- *
- * 思路:
- * 1、用System,in设定控制台输入
- * 2、创建一方法实现小写变大写,大写变小写,数字变#,(用正则表达式)
- */
- public static void main(String[] args) {
-
- BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));
- while (true){
- System.out.print("请输入只能包含数字和字母的字符串:");
- String s;
- try {
- s = bur.readLine();
- getString(s);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
- }
- private static void getString(String s) {
- char[] arr = s.toCharArray();
- StringBuffer sb = new StringBuffer();
- for (char c : arr) {
- if (c >= '0' && c <= '9') {
- sb.append("#");
- } else if (c >= 'a' && c <= 'z') {
- sb.append(String.valueOf(c).toUpperCase());
- } else if (c >= 'A' && c <= 'Z') {
- sb.append(String.valueOf(c).toLowerCase());
- }
- }
- System.out.println(sb.toString());
- }
-
- }
复制代码
作者: 向阳泪无痕 时间: 2013-11-15 11:24
因为大四正在实习原因,空余时间不多,利用下班的一会时间先把第一题做好了 。。。。明天有时间再把每二题做好交上。。。望谅解。- /*
- 第一题
- 学生成绩分为四个等级:90~100:优,80~89:良,70~79:中,60~69:及格,0~60:不及格。
- 要求:
- 1.输入一个学生的成绩:例如 99,那么输出优。
- 2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
- 3.可以连续输入成绩,当输入over的时候,结束输入成绩
- */
- import java.io.*;
- class ScoreText
- {
- public static void main(String[] args)
- {
- text();
- }
- public static void text()
- {
- String s = null;
- int score;
- BufferedReader bufr = null;
- try
- {
- while (true)
- {
- bufr = new BufferedReader(new InputStreamReader(System.in)); //键盘录入
-
- s = bufr.readLine(); //读取键盘录入的值
- if("over".equals(s))
- return;
- score = Integer.parseInt(s); //如果是非数字字符串,则会抛异常
-
- if(score<0 || score>100)
- System.out.println("请输入0-100之间的分数");
- if(score<=100 && score>=90)
- System.out.println("....优");
- else if(score<90 && score>=80)
- System.out.println("....良");
- else if(score<80 && score>=70)
- System.out.println("....中");
- else if(score<70 && score>=60)
- System.out.println("....及格");
- else if(score<60 && score>=0)
- System.out.println("....不及格");
-
- }
- }
- catch (Exception e)
- {
- if(s == null) //如果强制退出,就不提示
- return;
- System.out.println("请输入整数");
- text(); //抛异常后,提示,并可继续录入分数
- }
- finally
- {
- try
- {
- if(bufr!=null)
- bufr.close();
- }
- catch (IOException e)
- {
- System.out.println("关闭异常");
- }
- }
-
- }
- }
复制代码
作者: 星星Fighting 时间: 2013-11-15 16:59
恩恩,我会加油的!嘿嘿
作者: jttsai 时间: 2013-11-15 19:22
1,2两题已经做好,请查收!共勉之~
-
-
蒋涛涛.rar
5.51 KB, 下载次数: 61
作者: 终结者 时间: 2013-11-15 23:31
不知道这样打成压缩包对不对,不对的话说一声啊
-
-
终结者.zip
6.97 KB, 下载次数: 45
作者: 向阳泪无痕 时间: 2013-11-16 09:30
不好意思,第二题现在交上。。。望版主看看。- /*
- 第二题
- 从控制台字符串,将输入的字符串中的小写字母转换成大写字母,大写字母转换成小写字母,数字转换成#符号。
- 要求:
- 1.输入的必须只能包含数字和字母。
- 2.输出的要求要清晰明了。
- 例如:abd12AN45Ngk
- 转换后的是: ABD##an##nGK
- 思路:
- 1,用IO流读出键盘录入的数据
- 2,把读到的字符串数据采用for循环取出每一个字符,并把每一个字符作出相应的转换
- 3,把转换后的字符依次加入缓冲池中
- 4,从缓冲池中输出转换结果
- 5,清空缓冲池(因为要多次使用,所以用完一次清空一次)
- 6,关闭流资源
- */
- import java.io.*;
- class StringText
- {
- public static void main(String[] args) throws IOException
- {
- text();
- }
- public static void text()
- {
-
- String s = null; //用来保存IO流从控制台读到的数据
- BufferedReader bufr = null; //加强读取效率
- StringBuffer sbuf = new StringBuffer(); //缓冲池,用来存转换后的字符
- try
- {
- while (true)
- {
- //1,从控制台读取数据
- bufr = new BufferedReader(new InputStreamReader(System.in)); //键盘录入
-
- s = bufr.readLine(); //读取键盘录入的值,如读取失败则抛异常
-
- if("over".equals(s) || "OVER".equals(s)) //输入over 程序结束
- return;
- //2,把读取到的字符串作相应的转换
- for(int i=0;i<s.length();i++)
- {
- char chr = s.charAt(i);
- if(chr>='a' && chr<='z') //小写转大写
- chr -= 32;
- else if(chr>='A' && chr<='Z') //大写转小写
- chr += 32;
- else if(chr>='0' && chr<='9') //数字转为#
- chr = '#';
- else
- {
- System.out.println("只能输入字母或数字!!!");
- sbuf.delete(0,sbuf.length()); //转换失败,清空缓冲区。
- break;
- }
-
- //3,转换后存入到缓冲池中
- sbuf.append(chr);
- }
-
- //4,如果缓冲区有数据,输出转换后的结果
- if(sbuf.length()!=0)
- {
- System.out.println(sbuf.toString());
- //5,清空缓冲区
- sbuf.delete(0,sbuf.length()); //每转换一次结束后,清空缓冲池。
- }
- }
- }
- catch (Exception e) //处理读取数据失败
- {
- System.out.println("读取数据失败");
- }
- finally
- {
- //6,关闭流资源
- try
- {
- if(bufr!=null) //如果流成功创建才能正常关闭
- bufr.close();
- }
- catch (IOException e)
- {
- System.out.println("流关闭异常");
- }
- }
- }
- }
复制代码
作者: 雪龙 时间: 2013-11-16 12:16
答题活动我来了
-
-
王林红.zip
5.18 KB, 下载次数: 183
答题活动
作者: 马明杨 时间: 2013-11-16 12:41
你好,这2提我都做了,都在同一个包下,
马明杨.rar
(5.15 KB, 下载次数: 210)
作者: aspoMAN 时间: 2013-11-16 13:25
- /*
- 1.输入一个学生的成绩:例如 99,那么输出优。
- 2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
- 3.可以连续输入成绩,当输入over的时候,结束输入成绩
- */
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class ScoreProcess {
- public static void main (String[] args) {
- System.out.println("请输入0-100的整数...");
- while(true){
- BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
- int scoreValue = 0;
- String value = "";
- try {
- value = bfr.readLine();
- //"over"结束
- if(value.equals("over")) {
- System.out.println("退出!!!");
- return;
- } else if(value == null || value.equals("")) {
- System.out.println("空值,请重新输入");
- }
- scoreValue = Integer.parseInt(value);
- //处理成绩打印不同的级别
- processScore(scoreValue);
- } catch (NumberFormatException e) {
- System.out.println("格式不正确,numberFormat");
- } catch (IOException e) {
- System.out.println("格式不正确,io");
- }
- }
- }
-
- //处理成绩的方法
- //按照不同的成绩打印相应的级别
- public static void processScore(int score) {
- if(score <= 100 && score >= 0) {
- if (score < 60) {
- System.out.println("不及格");
- } else if (score < 70) {
- System.out.println("及格");
- } else if (score < 80) {
- System.out.println("中");
- } else if (score < 90) {
- System.out.println("良");
- } else {
- System.out.println("优");
- }
- } else {
- System.out.println("成绩超过界限,请重新输入");
- }
- }
- }
- import java.io.*;
- /*
- * 二。
- * 从控制台字符串,将输入的字符串中的小写字母转换成大写字母,大写字母转换成小写字母,数字转换成#符号。
- * 1.输入的必须只能包含数字和字母。
- * 2.输出的要求要清晰明了。
- *
- * 思路:使用Character的方法进行判断
- * 思路2:使用对应的ASC码进行判断,并进行相应转换(未实现)
- *
- * 65-90:A-Z
- * 97-122:a-z
- * 48-57:0-9
- */
- public class StringChangeTest {
- public static void main(String[] args) {
- System.out.println("输入字母或数字,进行转换...");
- while(true) {
- BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
- try {
- String value = bfr.readLine();
- System.out.println(StringChange(value));
- } catch (IOException e) {
- // TODO Auto-generated catch block
- //e.printStackTrace();
- }
- }
- }
-
- //对字符进行转换
- public static String StringChange(String s) {
- if(s.equals("") || s == null) {
- return "";
- } else if(s.equals("over")) {
- System.out.println("退出");
- System.exit(0);
- }
- //存储数据的容器
- StringBuilder sb=new StringBuilder(s);
- String temp = null;
- for (int i = 0; i < s.length(); i++) {
- if(Character.isLowerCase(sb.charAt(i))) { //判断是否是小写字母
- temp=s.substring(i, i+1).toUpperCase();//转换
- sb.replace(i, i+1, temp); //替换后存储(下同)
- } else if(Character.isUpperCase(sb.charAt(i))) { //判断是否是大写字母
- temp=s.substring(i, i+1).toLowerCase();
- sb.replace(i, i+1, temp);
- } else if (Character.isDigit(sb.charAt(i))) { //判断是否是数字
- sb.replace(i, i+1, "#");
- } else {
- System.out.println("位置"+i+"无法处理的类型" + " '" + s.substring(i, i+1) + "'");
- }
- }
- return sb.toString();
- }
- }
复制代码
作者: 烟花雨 时间: 2013-11-16 16:43
是否符合???
-
-
刘树军.zip
7.19 KB, 阅读权限: 100, 下载次数: 1
作者: 烟花雨 时间: 2013-11-16 16:50
上一个好像发失败了,重发一次
-
-
刘树军.zip
7.19 KB, 阅读权限: 100, 下载次数: 0
作者: joure 时间: 2013-11-16 19:58
第一题 思路:
首先判断输入的数据类型,如果为int型则正常输出结果,
如果为字符串,为"over"时退出程序,否则抛出错误
输出等级的判断可以用if语句,也可用switch语句,但是switch语句对于0~60区间的判断比较繁琐,所以使用if语句
我现在还挣扎在多线程,没学到io流这部分内容,第三个功能做的可能不完整,数据类型不知道怎么判断
java.util.Scanner;
public class TestChengji {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
if (//判断数据类型为int)
{
int x = sc.nextInt();
if(x<0||x>100)
System.out.println("非法数值,请重新输入!");
else if(x>90&x<=100)
System.out.println("优秀");
else if(x>=80&x<90)
System.out.println("良好");
else if(x>=70&x<80)
System.out.println("中等");
else if(x>=60&x<70)sxxx
System.out.println("及格");
else
System.out.println("不及格");
continue;
}
if (//判断数据类型为over)
{
System.exit;//结束输入
}
}
}
第二题还是还要用到io流,写不出来,简单说一下思路吧:
限制输入的数据类型只能为数字和字母,否则抛出错误
逐个遍历字符串中的字符并判断数据类型,
如果是字母,参考ASCII表小写字母-32后输出,大写字母+32输出结果
如果是数字,输出#
总结:感觉自己不会的东西太多了,我要集中一切时间和精力追赶进度,争取早日进入黑马学习
作者: aspoMAN 时间: 2013-11-17 14:08
已经答题,没得满分,给个做的好的参考下吧
作者: 蜀仙 时间: 2013-11-17 15:54
提交晚了, 今天才看见这个帖子
-
-
刘建国.zip
2.16 KB, 阅读权限: 100, 下载次数: 1
作者: 问天 时间: 2013-11-17 16:08
已提交。。。。。。。。。。。
-
-
周学君.zip
1.8 KB, 阅读权限: 100, 下载次数: 1
作者: 马明杨 时间: 2013-11-17 16:18
谢谢你,好人
作者: 蜀仙 时间: 2013-11-17 16:39
谢谢版主
作者: 向阳泪无痕 时间: 2013-11-18 02:40
向阳泪无痕 发表于 2013-11-16 09:30
不好意思,第二题现在交上。。。望版主看看。
恩……好的,不过我写的在不按要求输入时,break for循环结束。但while循环并没有结束啊!还可以继续输入的。嘿嘿……继续加油,早点进黑马。
作者: 问天 时间: 2013-11-19 16:32
楼主53楼的是不是忘记看了
作者: 杨增坤 时间: 2013-11-19 20:01
怎么查不到,你重新提交吧!
作者: 杨增坤 时间: 2013-11-19 20:02
是你提交的吗,有一个人是提交的两份,我判了一份,一个是重复的!
作者: 问天 时间: 2013-11-19 22:29
恩 好的
作者: 问天 时间: 2013-11-19 22:32
53楼 重新提交的 谢谢楼主
-
-
周学君.zip
1.8 KB, 阅读权限: 100, 下载次数: 1
作者: 问天 时间: 2013-11-19 22:35
我之前好像木有重复提交啊,耽误楼主时间了
作者: 问天 时间: 2013-11-20 15:16
好的 谢谢楼主
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |