第二题- 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;
- }
- }
复制代码 |