天天看点

java中String类及练习

 1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。[必做题] 

package pro_0410_homework;
/**
 * 1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。[必做题] 
 */
public class HomeWork01 
{
	public static void main(String[] args) 
	{
		//判断来自命令行的个数以及是不是数字
		try{
			if(args.length !=2)
			{
				throw new ArrayIndexOutOfBoundsException("参数不够");
			}
			float x=Float.parseFloat(args[0]);
			float y=Float.parseFloat(args[1]);
			System.out.println(x+y);
		}catch(ArrayIndexOutOfBoundsException e) {
			e.printStackTrace();
		}catch(NumberFormatException e) {
			System.err.println("参数格式错误不是数值型的");
			e.printStackTrace();
		}
	}
}
           

2、下面的一串字符,请统计其中0'到9'的各个数字的个数。

 * 原字符串: /1254782354987012345978

 * 输出: 0:1 1:2 2:3 3:2 4:3 5:3 7:3 8:3 9:3

package pro_0410_homework;
/**
 * 2、下面的一串字符,请统计其中0'到9'的各个数字的个数。
 * 原字符串: /1254782354987012345978
 * 输出: 0:1 1:2 2:3 3:2 4:3 5:3 7:3 8:3 9:3
 */
public class HomeWork02
{
	public static void main(String[] args) 
	{
		String str="91254782354987012345978"; 
		char[] ch=str.toCharArray();
		int a[]=new int[10];
		for(int i=0;i<ch.length;i++) 
		{
			a[ch[i]-'0']++;//ch[i]-'0'把字符转为数字
		}
		
		for(int i=0;i<10;i++) 
		{
			if(a[i]!=0)
				System.out.print(i+":"+a[i]+" ");
		}	
	}
}
           

 2、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符"e”出现的次数。

 * (识点: String中常用的方法) [必做题]

package pro_0410_homework;
/**
 * 2、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符"e”出现的次数。
 * (识点: String中常用的方法) [必做题]
 */
public class HomeWork03 
{
	public static void main(String[] args) 
	{
		StringBuffer str=new StringBuffer();
		for(int i=0;i<args.length;i++)
		{
			str.append(args[i]);
		}
		System.out.println(str);
		int sum=0;
		String e="e";
		char[] ee=e.toCharArray(); //把字符串转为char类型,然后进行判断
		for(int i=0;i<str.length();i++)
		{
			if(str.charAt(i)==ee[0]) 
			{
				sum++;
			}
			/*System.out.println(str.substring(i, i+1));
			if(str.substring(i, i+1)=="e")
			{
				sum++;
			}
			sum++;
			System.out.println(str.substring(i, i+1)=="e");*/
		}
		System.out.println(sum);
	}
}
           

1.写一个方法判断一个字符串是否对称 

package pro_0410_homework;
/**
 * 1.写一个方法判断一个字符串是否对称 
 */
public class HomeWork04 
{
	public static void main(String[] args) 
	{
		String str="aaaaa";
		System.out.println(HomeWork04.show3(str));
	}
	//方法一
	public static boolean show(String str)
	{
		StringBuffer str2=new StringBuffer();
		for(int i=0;i<str.length();i++)
		{
			str2.append(str.charAt(str.length()-1-i));
		}
		System.out.println(str2);
		if(str.equals(str2.toString()))
		{
			return true;
		}
		return false;
	}
	//方法二
	public static boolean show2(String str)
	{
		StringBuffer sb =new StringBuffer(str);//String里面没有reverse()反转的方法
		String s1 = sb.reverse().toString();//reverse()反转
		if(str.equals(s1))
		{
			System.out.println("字符串对称");
			return true;
		}else
		{
			System.out.println("字符串不对称");
			return false;
		}
	}
	//方法三
	public static boolean show3(String str)
	{
		//boolean flag=false;
		for(int i=0,y=str.length()-1;i<str.length()/2;i++,y--)
		{
			if(str.charAt(i)!=str.charAt(y))
			{
				return false;
			}
		}
		
		return true;
	}
}
           

2.给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置.

 * 如:"abcbcbabcb34bcbd"中,"bcb"子串的出现位置为: 1,7,12.字符串和子串均由用户输入

package pro_0410_homework;

import java.util.Scanner;
/**
 * 2.给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置.
 * 如:"abcbcbabcb34bcbd"中,"bcb"子串的出现位置为: 1,7,12.字符串和子串均由用户输入
 */
public class HomeWork05 
{
	public static void main(String[] args){
		try {
			Scanner s=new Scanner(System.in);
			System.out.println("请输入一个父字符串:");
			String str1=s.nextLine();
			if(str1.length()<=0) {
				throw new Exception("请输入有效字符");
			}
			System.out.println("请输入一个子字符串:");
			String str2=s.nextLine();
			if(str2.length()<=0) {
				throw new Exception("请输入有效字符");
			}
			HomeWork05.show(str1, str2);//1,7,12
		}catch(Exception e) {
			e.printStackTrace();;
		}
  	}
	public static void show(String str1, String str2){
		int len;//记录每个串的下标
		int c=str1.length();//str1原有的长度
		int l=0;//原有长度减去截下的新字符子串长度
		while((len=str1.indexOf(str2)) !=-1){
			str1=str1.substring(len+str2.length());//返回的新的子串
			System.out.println(len+l);		
			l=c-str1.length();
		}
	}
	public static void show2(String str1, String str2) {
		//定义计数器
		//int count = 0;
		//定义变量记录位置
		int index = 0;
		while( (index = str1.indexOf(str2,index)) !=-1 )
		{
			System.out.println("index=" + index);
			index = index + str2.length();
			//count++;
			
		}
		if(index==-1) {
			System.out.println("没有该子串");
		}
		//return count;
	}
}
           

3.String s=”name=zhangsan age=18 classNo=高校个体3班”;

 * 将上面的字符串拆分,结果如下:

 * zhangsan 18 高校个体3班 

package pro_0410_homework;
/**
 * 3.String s=”name=zhangsan age=18 classNo=高校个体3班”;
 * 将上面的字符串拆分,结果如下:
 * zhangsan 18 高校个体3班 
 */
public class HomeWork06 
{
	public static void main(String[] args) 
	{
		String s="name=zhangsan age=18 classNo=高校个体3班";
		String[] s1 = s.split(" ");
		StringBuffer sb =new StringBuffer();
		for (int i = 0; i < s1.length; i++) {
			String[] s2 =s1[i].split("=");
			sb.append(s2[1]);
			sb.append(" ");
		}
		System.out.println(sb);
	}
}
           

4.String s = "[email protected] www  neusoft  com"

 * 请输出所有子串

 * zhangsan

 * www

 * neusoft

 * com

package pro_0410_homework;
/**
 * 4.String s = "[email protected] www  neusoft  com"
 * 请输出所有子串
 * zhangsan
 * www
 * neusoft
 * com
 */
public class HomeWork07 
{
	public static void main(String[] args) 
	{
		String s = "[email protected] www neusoft com";
		s=s.replaceAll("@", "");
		String[] s1=s.split(" ");
		for(String item:s1)
		{
			System.out.println(item);
		}
	}
}
           
package pro_0410_homework;
/**
 * 5.现在有字符串:String s1=" [email protected]$#67 ";
	String s2="[email protected]$#67";
	完成以下操作:【默认的是对 s1操作】
(1):保存在字符数组中;
(2):取得第三个元素值;
(3):打印输出该字符串的每个字符;
(4):截取"sd"该子串;
(5):返回"67"的下标位置
(6):返回"gsd"的最后一个下标位置
(7):判断两个字符串是否相等【两种方法操作】
(8):将两个字符串进行连接为一个字符串,s2在前面,s1在后面
(9):去掉s1前后空格 
(10):将s1只要是大写字符全部转为小写
(11):判断最后面的字串是不是“67”
(12):判断s2最前面的字串是不是“sss” 
 */
public class HomeWork08 
{
	public static void main(String[] args) 
	{
		String s1=" [email protected]$#67 ";
		String s2="[email protected]$#67";
		
		char[] str1=s1.toCharArray();//(1)
		char s3=str1[2];
		System.out.println(s3);//(2)
		for(int i=0;i<str1.length;i++)
		{
			System.out.print(str1[i]);//(3)
		}
		System.out.println();//换行
		String ss="sd";
		int a1=s1.indexOf(ss);
		System.out.println(s1.substring(a1,a1+ss.length()));//(4)
		System.out.println(s1.indexOf("67"));//(5)
		System.out.println(s1.lastIndexOf("gsd"));//(6)
		System.out.println(s1.equals(s2));
		//System.out.println(s1.toString()==s2.toString());
		System.out.println(s1.equalsIgnoreCase(s2));
		System.out.println(s2.concat(s1));//(8)
		System.out.println(s1.trim());//(9)
		System.out.println(s1.toLowerCase());//(10)
		System.out.println(s1.endsWith("67"));//(11)
		System.out.println(s2.startsWith("sss"));//(12)
	}

}
           

6.模拟编写trim方法()

package pro_0410_homework;
/**
 * 6.模拟编写trim方法()
 */
public class HomeWork09 {

	public static void main(String[] args) 
	{
		String str="   sqql   ddde  ";
		String str1=trim(str);
		System.out.println(str1);
	}
	public static String trim(String str){
		int start=0;
		int end=str.length()-1;
		while(start<end && str.charAt(start)==' '){
			start++;
		}
		while(start<end && str.charAt(end)==' '){
			end--;
		}
		return str.substring(start, end+1);
	}
	/*public String trim() { //原有的trim方法
        int len = value.length;
        int st = 0;
        char[] val = value;
        while ((st < len) && (val[st] <= ' ')) {
            st++;
        }
        while ((st < len) && (val[len - 1] <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
    }*/
}
           

2.解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名,

      如果邮箱地址不合法则显示不合法的原因 [选做题]

package pro_0410_homework;

import java.util.Scanner;

/**
 * 2.解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名,
      如果邮箱地址不合法则显示不合法的原因 [选做题]
 */
public class Mailtest 
{
	public static void main(String[] args) 
	{
		Scanner in=new Scanner(System.in);
		System.out.println("请输入邮箱:");
		String email=in.nextLine();
		boolean b=Mailtest.testmail(email);
		//System.out.println(b);
	}
	public static boolean testmail(String email) 
	{
		boolean flag=true;
		if(email.indexOf("@")==-1 || email.indexOf(".")==-1)
		{
			System.out.println("邮箱中不包含@或.");
			flag=false;
		}
		if(email.indexOf("@")!=email.lastIndexOf("@"))
		{
			System.out.println("邮箱中只能有一个@");
			flag=false;
		}
		if(email.indexOf(".")!=email.lastIndexOf("."))
		{
			System.out.println("邮箱中只能有一个.");
			flag=false;
		}
		if(email.indexOf(".")>email.indexOf("@"))
		{
			System.out.println("@必须在.之前");
			flag=false;
		}
		return flag;
	}
}
           

 1、下面的一串宁符,以句号结束,请处理后让其倒序输出 (注意:有“句号")

 * 原宁符串: i am a student.

 * 输出: tneduts a ma i

package pro_0410_homework;
/**
 * 1、下面的一串宁符,以句号结束,请处理后让其倒序输出 (注意:有“句号")
 * 原宁符串: i am a student.
 * 输出: tneduts a ma i
 */
public class StringHomeWork 
{
	public static void main(String[] args) 
	{
		String a="i am a student.";
		System.out.println("原有字符串:"+a);
		
		StringHomeWork.method2(a);	
		StringHomeWork.method3();
	}
	public static void method1(String a)
	{
		//方法一:
		String[] strs=a.split("\\.");//拆分此字符串。输入的是英文状态下的. ,所以需要转义
		String temp = null;
		for(String item:strs)
		{
			//System.out.println(item);
			temp=item;
		}		
		for(int i=0;i<temp.length();i++)
		{
			System.out.print(temp.charAt(temp.length()-1-i));
		}
	}
	public static void method2(String a) 
	{
		//方法二:
		String b=a.substring(0, a.length()-1);//截取字符串
		//System.out.println(b);
		for(int i=0;i<b.length();i++)
		{
			System.out.print(b.charAt(b.length()-1-i));
		}
		System.out.println();
	}
	public static void method3()
	{
                //方法三
		StringBuffer sb=new StringBuffer("i am a student.");
		/*StringBuffer b=sb.reverse();
		System.out.println(b.substring(1));*/
		StringBuffer b=sb.reverse().delete(0, 1);
		System.out.println(b.toString());
	}
}
           

拓展:获取一个字符串在另一个字符串中出现的次数。

   比如: 获取"ab"在"abkcadkabkebtkablkskab"中出现的次数

package pro_0410_homework;
/**
 * 拓展:获取一个字符串在另一个字符串中出现的次数。
   比如: 获取"ab"在"abkcadkabkebtkablkskab"中出现的次数
 */
public class T {
	public static void main(String[] args){
		int i=getTime("abkcadkabkebtkablkskab", "ab");//0 7 14  20
		System.out.println("一共出现了:"+i+"次");
  	}
	public static int getTime(String str1, String str2){
		int count=0;
		int len;
		int c=str1.length();
		int l=0;
		System.out.println("原始字符串总长度:"+c);
		while((len=str1.indexOf(str2)) !=-1){
			count++;
			str1=str1.substring(len+str2.length());
			System.out.println("出现的位置:"+(len+l));//
			System.out.println("每次减少的长度:"+ (c-str1.length()) );
			l=c-str1.length();
		}
		return count;
	}
}
           

三位数数字转化字符串补零,如:数字1转化后为"001"

package pro_0410_homework;
/**
 * 三位数数字转化字符串补零,如:数字1转化后为"001"
 */
import java.util.Scanner;

public class TestStringCharset 
{
	public static void main(String[] args)
	{ 
		int input = new Scanner(System.in).nextInt();
		String s = numberToStringNew(input);
		System.out.println(s);
	}
	private static String numberToStringNew(int number) 
	{ 
		String numberString = String.valueOf(number);
		if (number <10){
			numberString = "00" + numberString;
		}else if (number < 100) {
			numberString ="0"+ numberString;
		}
		return numberString;
	}
}