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 = "zhangsan@ www  neusoft  com"
 * 請輸出所有子串
 * zhangsan
 * www
 * neusoft
 * com

package pro_0410_homework;
/**
 * 4.String s = "zhangsan@ www  neusoft  com"
 * 請輸出所有子串
 * zhangsan
 * www
 * neusoft
 * com
 */
public class HomeWork07 
{
	public static void main(String[] args) 
	{
		String s = "zhangsan@ 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=" SSSCCsdfgsdAX@$#67 ";
	String s2="sssdCCsdfGSDAX@$#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=" SSSCCsdfgsdAX@$#67 ";
		String s2="sssdCCsdfGSDAX@$#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;
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章