黑马程序员技术交流社区
标题:
对字符串中的字母进行大小写互转
[打印本页]
作者:
段光宇
时间:
2013-11-16 00:57
标题:
对字符串中的字母进行大小写互转
本帖最后由 段光宇 于 2013-11-16 13:12 编辑
对字符串中的字母进行大小写互转除了可以利用ASCII码加减,居然发现Character类中居然自带有判断字符和转换字符的方法,不了解的东西还有很多啊。下面贴代码,有不妥之处请大家指正。
package com.itheima;
import java.io.*;
/*编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
* 思路:①从键盘接收一个字符串,需要用到输入流
* ②接收到字符串后有两种方法可以进行大小字母转换,
* 第一种利用Character类自带函数逐字符判断字符类型进行转换并输出
* 第二种利用大小写字母范围逐字符判断字符类型后对字符加或减32转换字符并输出。
* 步骤:①定义两个实现转换功能的函数,分别利用两种不同方法实现。
* ②在主函数中调用函数实现输入字符串对其中的大小写字母进行互转。
* */
public class Test8 {
//------------------------------------------------------------------------------------------------------------------------
//两种转换方法
public static String convertstr1(String s) throws Exception {
StringBuffer sb=new StringBuffer();//定义字符串变量
if(s.equals("over")){
System.out.println("当前方法已经终止运行!");
Test8.main(null);
}
for(int i=0;i<s.length();i++) {
char c=s.charAt(i);//字符串中取得具体字符
if(Character.isUpperCase(c)) {
sb.append(Character.toLowerCase(c));
}//若用isUpperCase判断字符为大写字母,则利用toLowerCase将其转换为小写字母
else if(Character.isLowerCase(c)) {
sb.append(Character.toUpperCase(c));
}//若用isLowerCase判断字符为小写字母,则利用toUpperCase将其转换为大写字母
else if(Character.isDigit(c)) {
sb.append(c);
}//若用isDigit判断字符为数字,则保持不变
else {
sb.append(c);
}//其他字符保持不变
}
return sb.toString();//返回字符串
}
public static String convertstr2(String s) throws Exception {
StringBuffer sb=new StringBuffer();//定义字符串变量
if(s.equals("over")){
System.out.println("当前方法已经终止运行!");
Test8.main(null);
}
for(int i=0;i<s.length();i++) {
char c=s.charAt(i);//字符串中取得具体字符
if(c>='A'&&c<='Z') {
c+=32;
sb.append(c);
}//若判断字符为大写字母,则将其+32转换为小写字母。ASCII码中,大写字母比小写字母的数值小32
else if(c>='a'&&c<='z') {
c-=32;
sb.append(c);
}//若判断字符为小写字母,则将其-32转换为大写字母。ASCII码中,小写字母比大写字母的数值大32
else {
sb.append(c);
}//其他字符保持不变
}
return sb.toString();//返回字符串
}
//-----------------------------------------------------------------------------------------------------------------------
public static void convert1(){
BufferedReader br=null;
System.out.println("请输入一串字符,输入over可以停止当前方法。");
try {
br=new BufferedReader(new InputStreamReader(System.in));//接受字符串
String s=null;
while((s=br.readLine())!=null){
System.out.println(convertstr1(s));//调用convertstr1函数对字符串进行转换
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
public static void convert2(){
BufferedReader br=null;
System.out.println("请输入一串字符,输入over可以停止当前方法。");
try {
br=new BufferedReader(new InputStreamReader(System.in));//接受字符串
String s=null;
while((s=br.readLine())!=null){
System.out.println(convertstr2(s));//调用convertstr2函数对字符串进行转换
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args) {
System.out.println("请输入编号选择方法:\n1.Character类转换方法\n2.ASCII码转换方法\n");
try {
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
String a=br1.readLine();
if(a.equals("1")){
System.out.println("Character类转换方法:");
convert1();
}
if(a.equals("2")){
System.out.println("ASCII码转换方法:");
convert2();
}
if(!a.equals("1")||!a.equals("2")){
System.out.println("编号输入错误!");
Test8.main(null);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
作者:
hubby
时间:
2013-11-16 07:49
import java.io.*;
public class Test6 {
//因为主要目的是写大小写互转内容,所以没处理IO异常,直接throws了sorry
public static void main(String[] args) throws IOException
{
//键盘写入
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String line=null;
//读取
while ((line=bufr.readLine())!=null)
{
//输入over停止
if("over".equals(line))
break;
//将读取的line字符串转成字符数组。
char[] arr=line.toCharArray();
//定义个空字符串存储
StringBuffer n="";
//遍历这个字符串,然后将其中字符大小写互转,将转换后的字符存储进n中
for (int x=0;x<arr.length ;x++ )
{
if( Character.isLowerCase(arr[x]))
{
n+=Character.toUpperCase(arr[x]);
}
else
n+=Character.toLowerCase(arr[x]);
}
System.out.println(n);
}
bufr.close();
}
}
复制代码
楼主的好像可行啊。。
作者:
黄炳期
时间:
2013-11-16 11:01
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
作者:
鹏飞
时间:
2015-8-12 13:59
牛呀!!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2