A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wyq0627java11 中级黑马   /  2016-8-17 21:56  /  634 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

键盘录入一个字符串,将字符串进行大小写转换(小写字母转换成大写,大写字母转换成小写),判断转换后的字符串中各大小写字符出现的次数,在平台打印。

10 个回复

倒序浏览
判断转换后的字符串中各大小写字符出现的次数,这句话不怎么理解诶,老是把题理解错
回复 使用道具 举报
主要考String 类的一些常用方法。不懂的地方可以去看API文档。
[Java] 纯文本查看 复制代码
package demos;

import java.util.Scanner;

/*
需求:键盘录入一个字符串,将字符串进行大小写转换(小写字母转换成大写,大写字母转换成小写),判断转换后的字符串中各大小写字符出现的次数,在平台打印。
*/
public class Demo2{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入字符串:");
		String str = in.next();		
		System.out.println(exChange(str));		
	}
	
	public static String exChange(String str){
		StringBuffer sb = new StringBuffer();
		int Lowercount = 0,Uppercount = 0;
		if(str!=null){
			for(int i=0;i<str.length();i++){
				char c = str.charAt(i);
				if(Character.isUpperCase(c)){
					sb.append(Character.toLowerCase(c));
					Uppercount++;
				}else if(Character.isLowerCase(c)){
					sb.append(Character.toUpperCase(c)); 
					Lowercount++;
				}else{
					sb.append(c); 
				}
			}
		}
		return "原字符串中大写字母:"+Uppercount+"个,小写字母:"+Lowercount+"个,转换后字符串:"+sb.toString();
	}	
	
} 
回复 使用道具 举报
解题的关键是:Charcter类的方法,包括toLowerCase(char c)、toUpperCase(char c)
以及String类的方法toCharArray()。
首先你先用toCharArray()方法转为字符数组,然后比照ascall码表,判断各个字符是在65-90范围内的大写字母,
还是在97-122内的小写字母,然后转大小写。
对于转换后的字符串中各大小写字符出现的次数问题?
它指的是,转换后的字符中大写字符有哪些。小写字符有哪些。

代码实现已附上,主要是你的问题部分,你可以在其基础上优化!!!望采纳。
[Java] 纯文本查看 复制代码
package com.zlw;

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		Demo demo=new Demo();
		demo.convert();
	}

	public void convert(){
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入纯英文字符串...");
		String info = scanner.nextLine();
		
		//读入的字符串转为字符数组
		char[] charArray = info.toCharArray();
		
		int countOfUp=0;
		int countOfLow=0;
		for(char c:charArray){
			if(c>=65 && c<=90){
				//大写转小写
				Character.toLowerCase(c);
				countOfUp++;//此处记录的是转换前的大写字母,,,所以是转换后的小写字母
			}else if(c>=97 && c<=122){
				//小写转大写
				Character.toUpperCase(c);
				countOfLow++;//此处记录的是转换前的小写字母,,,所以是转换后的大写字母
				System.out.println(countOfLow);
			}else{
				System.out.println("您输入的字符不是纯英文。");
			}
		}
		
		System.out.println("转换后大写字母的个数是:"+countOfLow);
		System.out.println("转换后小写字母的个数是:"+countOfUp);
	}
}
急需技术分,谢谢。
回复 使用道具 举报 1 0
就大小写转换问题给出另外一种思路,下面附上代码,注:没有写大小写字母统计

[Java] 纯文本查看 复制代码
import java.util.Scanner;
public class k1 {
	public static void main(String[] args) {
		String s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
		Scanner sc = new Scanner(System.in);
		String outS = "";
		System.out.println("请输入待转换的字符串:");
		String inS = sc.next();
		for (int i = 0; i < inS.length(); i++) {
			outS = outS + s.charAt((s.indexOf(inS.charAt(i)) + 26));
		}
		System.out.println("转换后的字符串:");
		System.out.println(outS);
	}
}

回复 使用道具 举报
输入后转为字符串,然后进行大小写换算,再进行次数统计
回复 使用道具 举报
[Java] 纯文本查看 复制代码
package com.string;

import java.util.Scanner;

public class Demo_GetCount {


	/**
	 * 键盘录入一个字符串,将字符串进行大小写转换(小写字母转换成大写,大写字母转换成小写),
	 * 判断转换后的字符串中各大小写字符出现的次数,在平台打印。
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一段字符串:");
		String Line = sc.nextLine();
	        System.out.println(getCount(Line));
		
	}
	public static String getCount(String line){
		int LowerCount=0;//定义一个记录小写的计数器
		int UpperCount=0;//定义一个记录大写的计数器
		if(line!=null){          //先判断一下输入的字符串是否为空
			for(int i =0 ;i<line.length();i++){
				char c = line.charAt(i);
				if(c>=65&&c<=90){
					Character.toLowerCase(c);
					UpperCount++;
					//System.out.println(UpperCount);
					
				}else if(c>=97&&c<=132){
					Character.toUpperCase(c);					//通过包装类调用其方法来转换字符的大写功能
					LowerCount++;
					//System.out.println(LowerCount);
				}else
					System.out.println("你输入的字符串不符合规则");
			}
		}
              else
                         return "";
		
		return "转换之后的大写字符出现的数为"+UpperCount+",小写字符出现的次数为"+LowerCount;
	}

}
回复 使用道具 举报
import java.util.Scanner;
import java.util.TreeMap;

public class Test3 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                String a = sc.nextLine();
                char[] arr = a.toCharArray();
                for (int i=0; i<arr.length ; i++) {
                        char c=arr[i];
                        if(c>='a' & c<='z'){
                        c-=32;
                        } else if(c>='A' & c<='Z' ) {
                        c+=32;       
                        }
                        arr[i]=c;
                }
               
                TreeMap<Character, Integer> tr = new TreeMap<>();
                for (int i = 0; i < arr.length; i++) {
                        if (!tr.containsKey(arr[i])) {
                                tr.put(arr[i], 1);
                        } else {
                                tr.put(arr[i], tr.get(arr[i]) + 1);
                        }
                }
                for (char c : tr.keySet()) {
                        int value = tr.get(c);
                        System.out.print(c + "(" + value + ") ");

                }
        }
}

面试老师给的思路,自己写的。
回复 使用道具 举报
treemap老师说以后不怎么用, 就没讲
回复 使用道具 举报
回复 使用道具 举报
用TreeMap 主要是用他的有序性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马