今天做了一题,有很多思路,也学到了很多东西】
一、
1,s.tolowercase,s.toarray
2,s.tochararray
3s.charat(i) 取出指定位置上的数组
二、
遇到了很多错误
缩进错误 {}{}{} 以及异常处理方面的知识
同时我一开始陷入死循环,但却没有检查循环,很后悔,因为问题确实是处在循环语句当中,我忘记写i++了
我写这个i++也出现了错误,以后不应该这样用,这样做会导致最终结果超出数组长度,i++<a.length
switch忘记加break语句 忘记加default语句
不然会一直循环下去 不然会导致出错
具体源代码见下面
import java.util.Scanner;
public class Finaldemo2{
public static void main(String []args){
Scanner input = new Scanner(System.in);
String s = input.nextLine();
String str=s.toLowerCase();
char []a=str.toCharArray();
int []value = new int[5];
char []b ={'a','e','i','o','u'};
int i=0;
while(i<a.length){
switch (a[i]){
case 'a': value[0]++;
break;
case 'e': value[1]++;
break;
case 'i': value[2]++;
break;
case 'o': value[3]++;
break;
case 'u': value[4]++;
break;
default:break;}
i++;}
for(int j=0;j<5;j++)
System.out.println("the number of "+b[j]+" is "+value[j]);
}
}
//第一种风格的代码,主要是针对字符串进行操作,例如将字符串中的空格去掉将字符串中的所有大写字母转换成小写父母,从字符串中取出指定位置上的字符
//import java.util.Scanner;
//
//public class 统计字符 {
// public static void main(String[] args) {
//
// Scanner sc = new Scanner(System.in);
// int[] a = new int[26];//数组存放对应26个字母的出现次数比如a[0]的值对应字母a出现的次数,a[2]的值对应c出现的次数。。。
// System.out.println("请输入一串小写字符串");
// String str=sc.nextLine();
// str=str.trim().toLowerCase();//去掉前后空格并且全转为小写字母
//
// //此for循环求各个字母出现的次数
// for (int i = 0; i < str.length(); i++)
// {
// char c = str.charAt(i);//依次取出每个字母
// int index=c-'a';//这样就可以得到每个字母对应的数组下标
// a[index]=a[index]+1;//对应字母出现则存储字母的数组加1
// }
//
// //此for循环打印每个字母出现的次数,没有出现则不打印输出
// for (int i = 0; i < a.length; i++)
// {
// if(a[i]!=0)//等于0相当于这个字母没出现就没必要打印
// {
// System.out.println("字母"+(char)(i+'a')+"出现:"+a[i]+"次");
// }
// }
// }
//
//第二种方法,将字符串转换成数组进行操作,
//他添加元素的时候利用的是遍历数组进行操作吐过表示字母的数组与指定的字符相等那就找到表示字符的另一个计数的数组进行计数
//package ArrayRideMethod;
//import java.util.Scanner;
//public class ArrayRepeatComparator {
// public static void main(String[] args) {
// //输入一个英语字符串并把它转换成字符数组
// String s =new Scanner(System.in).nextLine();
// char[]a = s.toCharArray();
//
// //定义两个数组 key[]代表的是保存的单个字符 value[]代表的是保存 每个字符的出现次数
// char[]key=new char[100];
// int []value = new int[100];
// //初始化value 因为每个字符只要一比较value值就是2,所以初始化为1,为下面的代码做铺垫
// for(int i=0;i<100;i++) {
// value[i]=1;
// }
// //用temp变量表示这两个数组的lenght
// int temp =0;
//
// //循环比较每一个字符做判断
// for(int i =0;i<a.length;i++) {
// for(int j = 0;j<a.length;j++) {
// //因为每一个字符都要与其他所有的字符(包括自己在内)作比较下面判断的时候如果是相等把后面的清空、
// //在这里要进行判断提高效率(如果是空或者相等的话比较没有意义 就继续下一个的比较)
// if(a[i]!=0&&i!=j) {
// //如果不是空就赋给key[ ]
// key[temp]=a[i];
// if(a[i]==a[j]){
// //如果相等就清空,防止下一次重复判断
// a[j]=0;
// //如果相等就在此索引上加 1
// value[temp]++;
// }
// }else {
// continue;
// }
// }
// //如果字符数组不是空 就加 1
// if(a[i]!=0) {
// temp++;
// }
// }
// //遍历出结果
// for(int z=0;z<temp;z++) {
// System.out.print(key[z]+" ");
// }
// System.out.println();
// for(int z=0;z<temp;z++) {
// System.out.print(value[z]+" ");
// }
// }
//}