黑马程序员技术交流社区
标题:
从键盘接收一个字符串,对字符串中的字母进行大小写互转
[打印本页]
作者:
肖银
时间:
2014-1-6 02:01
标题:
从键盘接收一个字符串,对字符串中的字母进行大小写互转
这是我做的,觉得写得太麻烦了,有什么简单的方法吗?
//编写程序,从键盘接收一个字符串
//对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
import java.util.Scanner;
class test8 {
public static void main(String[] args) {
System.out.println("字母大小写互换,请输入后回车");
Scanner sc = new Scanner(System.in);
String val = sc.next();
System.out.println("转换如下");
val = run(val);
System.out.println(val);
}
//字母转换方法体
public static String run(String str)
{
char[] arrMin = new char[26];//小写字母数组
char[] arrMax = new char[26];//大写字母数组
char min = 'A';//定义大写字母
char max = 'a';//定义小宝字母
String s = "";//定义方法返回值
for (int i = 0;i < 26 ;i ++ )//字母循环写入数组
{
arrMin[i] = min;
arrMax[i] = max;
min += 1;
max += 1;
}
//循环对字符串进行转换,大写转小写,小写转大写
for (int i = 0;i < str.length() ;i ++ )
{
s += letter(arrMin,arrMax,str.charAt(i));
}
return s;
}
//字母大小写判断方法体
public static char letter (char[] arrI,char[] arrA,char t)
{
char str;//定义返回值
//如果在小写字母中数组中没有查找到,则查找大写字母数组
if (binarySearch(arrI,t) != -1)
{
str = arrA[binarySearch(arrI,t)];
}else if (binarySearch(arrA,t) != -1){
str = arrI[binarySearch(arrA,t)];
}else{
str = t;//如果大小写字母数组中都没有,则返回原字符
}
return str;
}
//二分查找
public static int binarySearch(char[] arr,char val)
{
int start = 0,end = arr.length - 1;
int mid = (start + end) >>> 1;
while (end >= start)
{
if (arr[mid] == val)
{
return mid;
}
if (arr[mid] < val)
{
start = mid + 1;
mid = (start + end ) >>> 1;
}
if (arr[mid] > val)
{
end = mid - 1;
mid = (start + end ) >>> 1;
}
}
return -1;
}
}
复制代码
作者:
浮出一个美
时间:
2014-1-6 08:56
我的第一反应就是ASCII码。
package com.heima.bbs;
import java.util.Scanner;
import javax.swing.text.ChangedCharSetException;
/**
* 从键盘接收一个字符串,对字符串中的字母进行大小写互转
*/
public class Demo7 {
public static void main(String[] args) {
System.out.println("请输入一串字母:");
Scanner sc = new Scanner(System.in);
String inputStr = sc.nextLine();
String outputStr = convert(inputStr);
System.out.println(inputStr+"\n大小写转换后:\n"+outputStr);
}
public static String convert(String sourceStr){
char[] targetStr = new char[sourceStr.length()];
for(int i=0;i<sourceStr.length();i++){
int ascii = (int)sourceStr.charAt(i);//得到字母对应的ascii码
if(ascii>=97){//小写
targetStr[i] = (char)(ascii-32);
}else if(ascii>=65){//大写
targetStr[i] = (char)(ascii+32);
}
}
return String.valueOf(targetStr);
}
}
复制代码
作者:
小悠久
时间:
2014-1-6 09:02
我用的是正则表达式将大小写的字符范围划到拉regx1和regx2里,然后分别读取从键盘输入的字符串,判断其大小写,并将其转换。如果对正则表达式不太了解,你可以上网查找下资料。希望对你有帮助。下面是我的代码,你可以参考下:
import java.util.Scanner;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arry;
String result="";
//获取键盘输入的字符串
Scanner sc = new Scanner(System.in);
arry=sc.nextLine();
//用正则表达式设定字符串范围
String regx1="[a-z]";
String regx2="[A-Z]";
for(int i=0;i<arry.length();i++)
{
String sub=arry.substring(i, i+1);
//判断是否是小写字母,是则转换为大写
if(sub.matches(regx1))
{
sub=sub.toUpperCase();
result+=sub;
}
//判断是否是小写字母,是则转换为小写
else if(sub.matches(regx2))
{
sub=sub.toLowerCase();
result+=sub;
}
//其他类型则直接输出
else
{
result+=sub;
}
}
System.out.println(result);
}
}
作者:
李兴
时间:
2014-1-6 14:32
class Test{
public static void main(String[] args) {
System.out.println("字母大小写互换,请输入后回车");
Scanner sc = new Scanner(System.in);
String val = sc.next();
System.out.println("转换如下");
val = run(val);
System.out.println(val);
}
//字母转换方法体
public static String run(String str)
{
StringBuilder sb = new StringBuilder();
for(int i=0;i<str.length();i++){
if(Character.isLowerCase(str.charAt(i))){ //判断第i个位置上的字符是否为小写
sb.append(Character.toUpperCase(str.charAt(i))); //转化为大写追加到sb末尾
}
else if(Character.isUpperCase(str.charAt(i))){
sb.append(Character.toLowerCase(str.charAt(i)));
}
}
return sb.toString();
}
}
复制代码
作者:
随便
时间:
2014-1-6 14:50
本帖最后由 邓宫财 于 2014-1-6 14:57 编辑
好吧,我就不混分了。
你想方便的话就使用io接受键盘录入,
然后想要改变大小写快可以:
1.使用String api
2.查ASCII表 A -->a 加32
a -->A 减32.
源码就自己写了。
作者:
午夜b'Boy
时间:
2014-1-6 16:10
大小写都有自己的编码区间,判断一个字符在哪个区间,再将编码加减以改变其大小写形式
作者:
周峰峰
时间:
2014-8-5 09:47
写的都不错
作者:
张亚军
时间:
2014-8-15 00:41
/*
* 思路:
* 1.对一个字符串进行转换,那么必须要先从键盘中接收数据,所以要用到输入流
* 2.在输入后,要想对字符串中的字母进行大小写互转,那么就必须加入一个方法,来实现这个功能。
* 3.大小写字母转换,必须从String类型转换到Char[]类型,然后再进行判断
* 4.对于一般的其他字符如数字,汉字,就不用进行处理,直接打印输出即可
*
*/
public class Test6 {
public static void main(String[] args) throws Exception{
transStream();
}
public static void transStream(){
BufferedReader br = null;
BufferedWriter bw = null;
try {
//键盘录入
br = new BufferedReader(new InputStreamReader(System.in));
//屏幕输出
bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=br.readLine())!=null){
if("over".equals(line))
break;
bw.write(wordChange(line));
bw.newLine();
bw.flush();
}
} catch (Exception e) {
//简单处理
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//字符转换,只对大小写字母进行转化
public static String wordChange(String line){
char[] ch = line.toCharArray();
//加入StringBuilder对字母进行增加
StringBuilder sb = new StringBuilder();
for(int i =0;i<ch.length;i++){
//加入判断,因为大写字母+32就是小写字母
if(ch[i]>='A'&&ch[i]<='Z'){
ch[i]+=32;
sb.append(ch[i]);
////加入判断,因为小写字母-32就是大写字母
}else if(ch[i]>='a'&&ch[i]<='z'){
ch[i]-=32;
sb.append(ch[i]);
}else{
//对其他字母不进行判断
sb.append(ch[i]);
}
}
return sb.toString();
}
}
作者:
油油油菜花
时间:
2014-9-30 16:31
package com.itheima;
import java.io.*;
public class Test8 {
/**
* 8、 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
*/
public static void main(String[] args){
InputStream is = new DataInputStream(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str;
try {
str = br.readLine();
StringBuffer strB = new StringBuffer(str);
for(int i=0;i<strB.length();i++){
if(strB.charAt(i)<='Z'&&strB.charAt(i)>='A'){
strB.setCharAt(i,Character.toLowerCase(strB.charAt(i)));
}else if(strB.charAt(i)<='z'&&strB.charAt(i)>='a'){
strB.setCharAt(i,Character.toUpperCase(strB.charAt(i)));
}
}
System.out.println(strB);
} catch (IOException e) {
e.printStackTrace();
}
}
}
作者:
rehan
时间:
2015-2-11 12:25
都很牛逼啊。。。。。。
作者:
刘德坤
时间:
2015-10-7 11:10
这么多大神啊!
作者:
13453150836
时间:
2015-10-7 12:03
前方在哪里?期望与各位大神相会。。。
作者:
ningbo_1115
时间:
2015-10-12 22:29
来来看看大神怎么解
作者:
1975532882
时间:
2015-10-20 10:39
niucha ,,,
作者:
wx_ao22R6RC
时间:
2015-11-5 19:50
之前对于toUpperCase方法和toLowerCase方法有点不知道怎么判断,在看来油油油菜花的代码后瞬间明白了。赞一个
作者:
flfjewffg
时间:
2016-9-6 13:30
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String str = sc.nextLine();
for (int i = 0; i <str.length(); i++) { //遍历
char c = str.charAt(i); //获得每个字符
if(c>='a'&&c<='z'){
//判断小写,直接切割拼接 ,链式编程
str = str.substring(0,i).concat(str.substring(i,i+1).toUpperCase().concat(str.substring(i+1)));
}else if(c >='A'&&c<='Z') {
//判断大写,方法同上.
str = str.substring(0,i).concat(str.substring(i,i+1).toLowerCase().concat(str.substring(i+1)));
}
}
System.out.println(str);
}
此方法简单 更好理解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2