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;
}
}