欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

Javase—String类习题,javasestring习题

来源: javaer 分享于  点击 33938 次 点评:184

Javase—String类习题,javasestring习题


/**
 * 1.字符串解析,现有一字符串,"卡巴斯基#杀毒软件#免费版#俄罗斯#",解析出每个元素。
 */

package com.Oracle.String_1;

public class Text01 {

	public static void main(String[] args) {
		String s="卡巴斯基#杀毒软件#免费版#俄罗斯#";
		String[] str=s.split("#");
		for(String n:str) {
			System.out.println(n);
		}
	}

}
/**
 * 2."那车水马龙的人世间,那样的来,那样的去,太匆忙"中最后一次出现“那”的位置
 */

package com.Oracle.String_1;

public class Text02 {

	public static void main(String[] args) {
		String s="那车水马龙的人世间,那样的来,那样的去,太匆忙";
		System.out.println(s);
		System.out.println("最后一次出现'那'的位置:"+s.lastIndexOf("那"));
	}

}
/**
 * 3.判断输入的字符串是否是 .java 结束 
	提示:public boolean endsWith(String suffix) (查帮助,查此方法的说明) 
 */

package com.Oracle.String_1;

import java.util.Scanner;

public class Text03 {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		System.out.println("请输入一串字符");
		String str=s.next();
		if(str.endsWith(".java")) {
			System.out.println("输入的字符串以.java结束");
		}else {
			System.out.println("输入的字符串不是以.java结束");
		}
	}

}
/**
 * 4.有一身份证号,判断此为男还是女,基于此方法,
 * 写一个算法,判断一个身份证号为男还是女。(身份证分15位和18位)
 */

package com.Oracle.String_1;

import java.util.Scanner;

public class Text04 {

	public static void main(String[] args) {
		System.out.println("请输入您的身份证号:");
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		String str=s.next();
		System.out.println(str.length());
//		当身份证为18位时,倒数第二位为单数则性别为男,双数则为女
		if(str.length()==18) {
			if(str.charAt(str.length()-2)%2==0) {
				System.out.println("该身份证号码主人的性别为女");
			}else {
				System.out.println("该身份证号码主人的性别为男");
			}
		}
//		当身份证为15位时,倒数第一位为单数则性别为男,双数则为女
		else if(str.length()==15) {
			if(str.charAt(str.length()-1)%2==0) {
				System.out.println("该身份证号码主人的性别为女");
			}else {
				System.out.println("该身份证号码主人的性别为男");
			}
		}
		
	}

}
/**
 * 5.有如下格式的字符串name-age-sex-address,解析出姓名,年龄等信息。
 */

package com.Oracle.String_1;

import java.util.Scanner;

public class Text05 {
	public static void main(String[] args) {
		System.out.println("请按照name-age-sex-address的格式输入信息:");
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		String str=s.next();
		String[] information=new String[4];
		information=str.split("-");
		for(String n:information) {
			System.out.println(n);
		}
		
	}
}
/**
 * 6.求出字符串中有多少种字符,以及每个字符的个数
	static void printCharInfo(String str)
 例如有字符串 str="apple is a apple.";
   结果应该是a:3 p:4 l:2 e:2  :3 i:1 s:1 .:1
 */

package com.Oracle.String_1;

import java.util.Scanner;

public class Text06 {
	public static void main(String[] args) {
		System.out.println("请输入一段字符:");
		Scanner s=new Scanner(System.in);
		String str=s.nextLine();
//		str=str.replace(" ", "");
//		System.out.println(str);
//		System.out.println(str.length());
//		for(int i=0;i<str.length();i++) {
//			System.out.println(str.charAt(i));
//		}
		int n=0;			//字符的个数
		int varies=0;		//字符的种类
		
		for(char c=65;c<=90&&c>=65 || c<=122&&c>=97;c++) {
			n=0;
			for(int i=0;i<str.length();i++) {
				if(str.charAt(i)==c) {
					n++;
//					System.out.println(n);
				}
				if(c==90) {
					c=97;
				}
			}
			if(n!=0) {
				System.out.println(c+":"+n);
				varies++;
			}
		}
		System.out.println("共有"+varies+"种字符");
		s.close();
	}
}
以下代码中需要用到的Resolve方法:
package com.Oracle.String_1;

public class Resolve {
//	将字符串右侧的空格删除
	public static String rtrim(String str) {
//		String s=str;
		while(str.endsWith(" ")) {
			str=str.substring(0, str.length()-1);
		}
		return str;
	}
//	将传入的字符串和其翻转后的字符串连接在一起
	public static String concat(String str) {
		
		str=str+Resolve.reverse(str);
		
		return str;
		
	}
//	将字符串进行翻转
	public static String reverse(String s) {
		StringBuffer sb=new StringBuffer(s);
		return sb.reverse().toString();
//		char[] c=new char[s.length()];
//		for(int i=0;i<s.length();i++) {
//			c[s.length()-1-i]=s.charAt(i);
//		}
//		s=new String(c);
//		return s;
	}
//	将字符串转为存储字符的数组
	public static char[] toChar(String s) {
		char[] c=new char[s.length()];
		for(int i=0;i<s.length();i++) {
			c[i]=s.charAt(i);
		}
		return c;
	}
	
	/**
	 * 将字符串右移n位
	 * @param str
	 * @param position
	 * @return
	 */
	public static String moveToRight(String str,int position) {
		String right=str.substring(str.length()-position,str.length());
		String left=str.substring(0,str.length()-position);
		return right+left;
	}
	
	
//	public static String moveToRight(String str,int position) {
//		char[] c=Resolve.toChar(str);
//		char[] move=new char[position];
////		储存从数组末尾移动到前端的元素
//		int k=0;
//		for(int i=c.length-position;i<c.length;i++) {
//			move[k++]=c[i];
//		}
////		将数组中的元素向右移position位,直至到达数组最后一个元素
//		for(int i=c.length-1;i-position>=0;i--) {
//			c[i]=c[i-position];
//		}
////		将move中储存的原数组末尾的元素移到元素开头的位置
//		while(k>0) {
//			c[--k]=move[k];
//		}
////		将字符数组创建为字符串,赋给str
//		str=new String(c);
//		return str;
//	}
	
	/**
	 * 求5个字符串中最长的那个,把最长的字符串打印出来
	 * @param s
	 * @return
	 */
	public static String longestString(String[] s) {
		String longest=s[0];
		for(int i=0;i<s.length;i++) {
			longest=longest.length()>s[i].length()?longest:s[i];
		}
		return longest;
	}
	/**
	 * 若可以从一个源字符串中, 找到一个相符的字符串(忽略大小写), 则返回第一个字符的索引位置,否则返回-1。
	 * @param str
	 * @param subStr
	 * @return
	 */
	public static int stringAt(String str,String subStr) {
		if(str.toLowerCase().contains(subStr.toLowerCase())) {
			return str.toLowerCase().indexOf(subStr.toLowerCase());
		}
		return -1;
	}
//	判断是否是回文
	public static boolean rotate(String s) {
		if(s.equals(Resolve.reverse(s))) {
			return true;
		}
		return false;
	}
}
第七题:
/**
 * 7.定义一个方法,用来去掉字符串右边的空格
	String rtrim(String str)
	
 */

package com.Oracle.String_1;

import java.util.Scanner;

public class Text07 {
	public static void main(String[] args) {
		System.out.println("请输入一段字符:");
		Scanner s=new Scanner(System.in);
		String str=s.nextLine();
		String string=Resolve.rtrim(str);
		System.out.println(string);
		s.close();
	}
}
/**
 * 8.定义一个方法,将str所指字符串的正序和反序进行连接,例如 "ok"->"okko"
	String concat(String str);
 */

package com.Oracle.String_1;

import java.util.Scanner;

public class Text08 {
	public static void main(String[] args) {
		System.out.println("请输入一段字符:");
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		String str=s.nextLine();
		System.out.println(Resolve.concat(str));
	}
}
/**
 * 9.字符串右移n位,例如   "hello world" 右移两位 后ldhello wor
	要求写一个方法实现此功能,方法的格式是
	String moveToRight(String str,int position)
	str:需要移动的字符串
	p:右移的位数
	
 */


package com.Oracle.String_1;

import java.util.Scanner;

public class Text09 {
	public static void main(String[] args) {
		System.out.println("请输入一段字符:");
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		String str=s.nextLine();
		System.out.println("请输入您要右移的位置:");
		int position=s.nextInt();
		str=Resolve.moveToRight(str, position);
		System.out.println(str);
	}
}
//10.求5个字符串中最长的那个,把最长的字符串打印出来

package com.Oracle.String_1;

public class Text10 {
	public static void main(String[] args) {
		String[] s=new String[]{"meet","advent","roost","chineseAndEnglish","program"};
		System.out.println(Resolve.longestString(s));
		
	}
}

/**
 * 11.若可以从一个源字符串中, 找到一个相符的字符串(忽略大小写), 则返回第一个字符的索引位置,否则返回-1。
 */

package com.Oracle.String_1;

public class Text11 {
	public static void main(String[] args) {
		String s1="myyname";
		String s2="Name";
		
		System.out.println(Resolve.stringAt(s1, s2));
		
	}
}
/**
 * 12.判断一个字符串是否是回文
 */

package com.Oracle.String_1;

public class Text12 {

	public static void main(String[] args) {
		String s1="12331";
		System.out.println(Resolve.rotate(s1));
		String s2="12321";
		System.out.println(Resolve.rotate(s2));
	}

}
/**
 * 13.如下字符串,01#张三#20-02#李四#30-03#王五#40。。。。。。,解析每个人分数多少。样式如下:
01 张三 20		02 李四 30		03 王五 40。并且计算总分。
 */

package com.Oracle.String_1;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Text13 {
	public static void main(String[] args) {
		Pattern p=Pattern.compile("#[0-9]{1,3}");
		String s="01#张三#20-02#李四#30-03#王五#40";
		String[] str=s.split("-");
		System.out.println(Arrays.toString(str));
		String[] score=new String[str.length];
		int sum=0;
		for(int i=0;i<score.length;i++) {
			Matcher m=p.matcher(str[i]);
			@SuppressWarnings("unused")
			boolean b=m.find();
			score[i]=m.group();
			score[i]=m.group().substring(1, score[i].length());
//			System.out.println(score[i]);
//			System.out.println(Integer.valueOf(score[i]));
			sum+=Integer.valueOf(score[i]);
		}
		System.out.println("总分为:"+sum);
	}
}

第二部分:

/**
 * 1.已知字符串:"this is a test of java". 按要求执行以下操作:
   (1) 统计该字符串中字母s出现的次数
   (2) 取出子字符串"test"
   (3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
   (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
   (5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
   (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
 */

package com.Oracle.String_2;

import java.util.Arrays;

public class Text1 {
	public static void main(String[] args) {
		String s="this is a test of java";
//		(1) 统计该字符串中字母s出现的次数
		System.out.println(s.length()-s.replace("s", "").length());
		
//		(2) 取出子字符串"test"
		System.out.println(s.replace("test", ""));
		
//		(3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
//		方法一:
		char[] c1=new char[s.length()];
		for(int i=0;i<c1.length;i++) {
			c1[i]=s.charAt(i);
		}
		System.out.println(Arrays.toString(c1));

//		方法二:
		char[] c2=s.toCharArray();
		System.out.println(Arrays.toString(c2));
		
//		(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
		c1[0]=Character.toUpperCase(c1[0]);
		for(int i=0;i<c1.length;i++) {
//			System.out.println(s.substring(i, i+1));
			if(s.substring(i, i+1).equals(" ")) {
//				System.out.println(s.substring(i+1, i+2));
//				System.out.println(s.substring(i+1, i+2).toUpperCase());
				c1[i+1]=Character.toUpperCase(c1[i+1]);
			}
		}
		String str=new String(c1);
		System.out.println(str);
		
//		(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
//		方法一:
		StringBuffer strb=new StringBuffer(s);
		strb=strb.reverse();
		System.out.println(strb);
//		方法二
		for(int i=0;i<c1.length;i++) {
			c2[i]=c1[c1.length-i-1];
		}
		String string=new String(c2);
		System.out.println(string);
//		(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
		String[] st=s.split(" ");
		System.out.println(Arrays.toString(st));
		
	}
}
/**
 * 2.获取一个字符串在另一个字符串中出现的次数
	例如,获取"kk"在"abkkcdkkefkkskk"中出现的次数
 */

package com.Oracle.String_2;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Text2 {
	public static void main(String[] args) {
		int n=0;
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		System.out.println("请输入一串字符");
		String str=s.nextLine();
		Pattern p=Pattern.compile("[k]{2}");
		Matcher m=p.matcher(str);
		while(m.find()) {
			n++;
		}
		System.out.println("kk在该字符串中出现的次数为:"+n);
	}
}
/**
 * 3.模拟一个trim方法,去除字符串两端的空格
思路:	   1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止,结尾处判断空格也是如此。
       2,当开始和结尾都判断到不是空格时,就是要获取的字符串。
 */

package com.Oracle.String_2;

import java.util.Scanner;

public class Text3 {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		System.out.println("请输入一串字符");
		String str=s.nextLine();
		str=trim(str);
		System.out.println("去掉前后空格后为:"+str);
	}
	public static String trim(String str) {
		while(str.substring(0, 1).equals(" ")) {
			str=str.substring(1,str.length());
		}
		while(str.substring(str.length()-1, str.length()).equals(" ")) {
			str=str.substring(0,str.length()-1);
		}
		return str;
	}
}






相关文章

    暂无相关文章

用户点评