Java語(yǔ)言程序設(shè)計(jì) 課件 第6章 字符串類_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件 第6章 字符串類_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件 第6章 字符串類_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件 第6章 字符串類_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件 第6章 字符串類_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java語(yǔ)言程序設(shè)計(jì)第6章字符串類

1String類及基本操作23主要內(nèi)容Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社2022文本塊命令行參數(shù)45格式化數(shù)據(jù)StringBuilder類6案例:判定回文串7案例:字符串加密解密Java語(yǔ)言程序設(shè)計(jì)String類及基本操作Java提供了三個(gè)字符串類:String類StringBuilder類StringBuffer類String類是不變字符串,StringBuilder和StringBuffer是可變字符串,這三種字符串都是16位的Unicode字符序列。概述有一種特殊的創(chuàng)建String對(duì)象的方法,這是直接利用字符串字面值創(chuàng)建字符串對(duì)象,例如:varstr="Javaiscool";創(chuàng)建String類對(duì)象一般使用String類的構(gòu)造方法創(chuàng)建一個(gè)字符串對(duì)象。String類有十多個(gè)重載的構(gòu)造方法,可以生成一個(gè)空字符串,也可以由字符或字節(jié)數(shù)組生成字符串。varstr=newString(“Javaiscool”);下面代碼說(shuō)明了使用字符串的構(gòu)造方法創(chuàng)建字符串對(duì)象。char[]chars1={'A','B','C'};char[]chars2={'中','國(guó)','π','α','M','N'};vars1=newString(chars1);vars2=newString(chars2,0,4);System.out.println("s1="+s1);//輸出:s1=ABCSystem.out.println("s2="+s2);//輸出:s2=中國(guó)πα首先看一下字符串在內(nèi)存中的表示。假設(shè)有下面聲明:varstr=newString("Javaiscool");該字符串對(duì)象在內(nèi)存中狀態(tài)如圖6-1所示。字符串基本操作可以調(diào)用String類的方法操作字符串,下面是幾個(gè)最常用方法。字符串基本操作publicintlength():返回字符串的長(zhǎng)度,即字符串包含的字符個(gè)數(shù)。publicStringsubstring(intbeginIndex,intendIndex):從字符串的下標(biāo)beginIndex開(kāi)始到endIndex(不包含)結(jié)束產(chǎn)生一個(gè)子字符串。publicStringsubstring(intbeginIndex)publicStringtoUpperCase()

publicStringtoLowerCase()publicStringconcat(Stringstr)字符串基本操作publicStringreplace(charoldChar,charnewChar):將字符串中的所有oldChar字符改變?yōu)閚ewChar字符,返回一個(gè)新的字符串。publiccharcharAt(intindex):返回字符串中指定位置的字符,index表示位置,范圍為0~s.length()-1。publicStringtrim()public

String

repeat?(int

count)publicbooleanisEmpty()publicbooleanisBlank()public

String

strip()下面代碼演示了String類的幾個(gè)方法的使用。vars="Javaiscool";System.out.println(s.length());//輸出:12System.out.println(s.substring(5,7));//輸出:isSystem.out.println(s.substring(8));//輸出:coolSystem.out.println(s.toUpperCase());//輸出:JAVAISCOOLSystem.out.println(s.toLowerCase());//輸出:javaiscool

vars1="編寫(xiě)一次,";vars2="到處運(yùn)行。";s1=s1.concat(s2);System.out.println(s1);//輸出:編寫(xiě)一次,到處運(yùn)行。System.out.println(s.replace('a','A'));//輸出:JAvAiscoolSystem.out.println(s.isEmpty());//輸出:false在Java程序中一旦創(chuàng)建一個(gè)String對(duì)象,就不能對(duì)其內(nèi)容進(jìn)行改變,因此說(shuō)Java的String對(duì)象是不可變的字符串。請(qǐng)看下面的例子。String對(duì)象的不變性

vars=newString("Hello,world");s.replace('o','A');//s的值并沒(méi)有改變s=s.substring(0,6).concat("Java");s.toUpperCase();//s的值并沒(méi)有改變System.out.println(s);//輸出:Hello,Java經(jīng)常需要比較兩個(gè)字符串是否相等、或比較兩個(gè)字符串的大小,如果要比較兩個(gè)字符串對(duì)象的內(nèi)容是否相等,可以使用String類的equals()方法或equalsIgnoreCase()方法。6.1.4字符串比較publicbooleanequals(Stringanother):比較兩個(gè)字符串內(nèi)容是否相等。publicbooleanequalsIgnoreCase(Stringanother):比較兩個(gè)字符串內(nèi)容是否相等,不區(qū)分大小寫(xiě)。下面代碼演示了這兩個(gè)方法的使用。vars1=newString("Hello");vars2=newString("Hello");System.out.println(s1.equals(s2));//輸出:trueSystem.out.println(s1.equals("hello"));//輸出:falseSystem.out.println(s1.equalsIgnoreCase("hello"));//輸出:true特別注意,不能使用“==”號(hào)比較字符串內(nèi)容是否相等,請(qǐng)看下面代碼。vars1=newString("Hello");vars2=newString("Hello");System.out.println(s1==s2);//輸出:false6.1.4字符串比較這是因?yàn)樵谑褂谩?=”比較引用類型的數(shù)據(jù)(對(duì)象)時(shí),比較的是引用(地址)是否相等。只有兩個(gè)引用指向同一個(gè)對(duì)象時(shí),結(jié)果才為true。上面使用構(gòu)造方法創(chuàng)建的兩個(gè)對(duì)象是不同的,因此s1和s2的引用是不同的再請(qǐng)看下面一段代碼:vars1="Hello";//不是用構(gòu)造方法創(chuàng)建的對(duì)象vars2="Hello";System.out.println(s1==s2);//輸出:true6.1.4字符串比較輸出結(jié)果true。這兩段代碼的不同之處在于創(chuàng)建s1、s2對(duì)象的代碼不同。這里的s1、s2是用字符串常量創(chuàng)建的兩個(gè)對(duì)象。字符串常量存儲(chǔ)和對(duì)象存儲(chǔ)不同,字符串常量是存儲(chǔ)在常量池中,對(duì)內(nèi)容相同的字符串常量在常量池中只有一個(gè)副本,因此s1和s2是指向同一個(gè)對(duì)象6.1.4字符串比較vars1=newString("Hello");vars2=newString("Hello");System.out.println(s1==s2);//falsevars1="Hello";vars2="Hello";System.out.println(s1==s2);//true要比較大小,可以使用String類的compareTo()方法,格式為:publicintcompareTo(Stringanother)6.1.4字符串比較使用字符的碼點(diǎn)(codepoint)進(jìn)行比較。(減法計(jì)算)若當(dāng)前字符串小于參數(shù)字符串,方法返回值小于0;若當(dāng)前字符串等于參數(shù)字符串,方法返回值等于0;若當(dāng)前字符串大于參數(shù)字符串方法返回值大于0。下面語(yǔ)句輸出-2,因?yàn)榍皟蓚€(gè)字符(“AB”)相同,從第3個(gè)字符開(kāi)始比較。因?yàn)?C'的碼點(diǎn)(67)比'E'的碼點(diǎn)(69)小2。System.out.println("ABC".compareTo("ABE"));如果在字符串比較時(shí)忽略大小寫(xiě),可使用方法compareToIgnoreCase(StringanotherString)

String[]str={"China","USA","Russia","France","England"};

for(inti=str.length-1;i>=0;i--)

for(intj=0;j<i;j++){

if(str[j].compareTo(str[j+1])>0){Stringtemp=str[j];str[j]=str[j+1];str[j+1]=temp;

}

}

for(Strings:str)System.out.print(s+"");

}程序6.2StringSort.java從一個(gè)字符串中查找指定的字符或子字符串。String類提供了從字符串中查找字符和子串的方法,這些方法的返回值都是整數(shù),查找成功返回字符或子串在原字符串中出現(xiàn)的下標(biāo)位置(下標(biāo)從0開(kāi)始),查找不成功則返回-1。6.1.5字符串查找和匹配publicintindexOf(intch):查找字符ch第一次出現(xiàn)的下標(biāo)位置。如果查找不成功則返回-1,下述方法相同。publicintindexOf(intch,intfromIndex)publicintindexOf(Stringstr)publicintindexOf(Stringstr,intfromIndex)下列代碼演示了幾個(gè)查找方法:vars=newString("ThisisaJavastring.");System.out.println(s.length());//輸出:22System.out.println(s.indexOf('a'));//輸出:8System.out.println(s.lastIndexOf('a',12));//輸出:11System.out.println(s.indexOf("is"));//輸出:2System.out.println(s.lastIndexOf("is"));//輸出:5System.out.println(s.indexOf("my"));//輸出:-1使用matches()方法返回字符串是否與正則表達(dá)式匹配,格式如下。publicbooleanmatches(Stringregex)該方法返回字符串是否與參數(shù)給定的正則表達(dá)式匹配。6.1.5字符串查找和匹配請(qǐng)看下面代碼。varss="onelittle,twolittle,threelittle.";System.out.println(ss.matches(".*little.*"));//輸出:true使用String類的split()方法可以將一個(gè)字符串分解成子字符串或令牌(token),使用join()方法可以將String數(shù)組中字符串連接起來(lái),6.1.6字符串拆分和組合publicString[]split(Stringregex):參數(shù)regex表示正則表達(dá)式,根據(jù)給定的正則表達(dá)式將字符串拆分成字符串?dāng)?shù)組。publicstaticStringjoin(CharSequence

delimiter,CharSequence...

elements):使用指定的分割符將elements的各元素組合成一個(gè)新字符串。下面代碼拆分一個(gè)字符串。varss="onelittle,twolittle,threelittle.";String[]str=ss.split("[,.]");System.out.println(str.length);//輸出:6for(vars:str){System.out.println(s);}在split()中指定的正則表達(dá)式“[,.]”的含義是使用空格、逗號(hào)或句點(diǎn)為分隔符拆分字符串。String類的靜態(tài)join()方法,實(shí)現(xiàn)將一個(gè)字符串?dāng)?shù)組按指定的分割符組合成一個(gè)字符串,它的功能與split()方法相反。下面代碼演示了join()方法的使用。varjoined=String.join("\\","C:","javastudy","com");System.out.println(joined);//輸出:C:\javastudy\comString[]seasons={"春","夏","秋","冬"};vars=String.join("-",seasons);System.out.println(s);//輸出:春-夏-秋-冬字符串不是數(shù)組,但是字符串能夠轉(zhuǎn)換成字符數(shù)組或字節(jié)數(shù)組。6.1.7字符串轉(zhuǎn)換為數(shù)組publicchar[]toCharArray():將字符串中的字符轉(zhuǎn)換為字符數(shù)組。publicvoidgetChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin):將字符串中從起始位置(srcBegin)到結(jié)束位置(srcEnd)之間的字符復(fù)制到字符數(shù)組dst中,dstBegin為目標(biāo)數(shù)組的起始位置。publicbyte[]getBytes():使用平臺(tái)默認(rèn)的字符集將字符串編碼成字節(jié)序列并將結(jié)果存儲(chǔ)到字節(jié)數(shù)組中。下面代碼使用toCharArray()方法將字符串轉(zhuǎn)換為字符數(shù)組,使用getChars()方法將字符串的一部分復(fù)制到字符數(shù)組中。vars=newString("ThisisaJavastring.");char[]chars=s.toCharArray();System.out.println(chars);//輸出:ThisisaJavastring.char[]subs=newchar[4];s.getChars(10,14,subs,0);System.out.println(subs);//輸出:JavaJava語(yǔ)言程序設(shè)計(jì)6.2文本塊在Java15之前,對(duì)多行大塊文本通常使用換行(\n)和連接符(+)來(lái)表示,例如下面代碼表示一個(gè)多行文本塊。文本塊Stringpoem="白日依山盡,\n"+"黃河入海流。\n"+"欲窮千里目,\n"+"更上一層樓。";Java15提供了文本塊(textblock)的特性,對(duì)大塊文本輸出可以不使用連接符(+),而是直接給出文本。文本塊的定界符是3個(gè)雙引號(hào),在起始定界符后面可跟0個(gè)或多個(gè)空格和一個(gè)行終止符,結(jié)束符沒(méi)有類似規(guī)則,例如:文本塊Stringpoem=""“

白日依山盡,

黃河入海流。

欲窮千里目,

更上一層樓。""";System.out.println(poem);Java語(yǔ)言程序設(shè)計(jì)6.3命令行參數(shù)Java應(yīng)用程序從main()方法開(kāi)始執(zhí)行,main()方法的聲明格式為:publicstaticvoidmain(String[]args){}命令行參數(shù)參數(shù)args稱為命令行參數(shù),它是一個(gè)String數(shù)組,該參數(shù)是在程序運(yùn)行時(shí)通過(guò)命令行傳遞給main()方法。下面程序要求從命令行為程序傳遞3個(gè)參數(shù),在main()方法中通過(guò)args[0]、args[1]、args[2]輸出這3個(gè)參數(shù)的值。packagecom.boda.xy;publicclassHelloProgram{publicstaticvoidmain(String[]args){System.out.println(args[0]+""+args[1]+""+args[2]);}}程序6.3HelloProgram.javaJava語(yǔ)言程序設(shè)計(jì)6.4格式化數(shù)據(jù)在前面的許多例子中,我們使用System.out.println()方法輸出數(shù)據(jù),該方法按默認(rèn)格式輸出數(shù)據(jù),例如要輸出Math.PI的值,結(jié)果如下:3.141592653589793格式化數(shù)據(jù)有時(shí)我們可能需要將數(shù)據(jù)按某種格式輸出,比如保留4位小數(shù),并且總寬度占10字符,這時(shí)就需要對(duì)數(shù)據(jù)進(jìn)行格式化。我們可以使用String類的format()靜態(tài)方法將數(shù)據(jù)格式化,然后輸出。也可以使用System.out.printf()方法將數(shù)據(jù)格式化后直接在控制臺(tái)上輸出,該方法格式如下:publicPrintStreamprintf(String

format,Object...

args)格式化數(shù)據(jù)參數(shù)format是格式控制字符串,其中可以嵌入格式符(specifier)指定參數(shù)如何輸出。args為輸出參數(shù)列表,參數(shù)可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。格式符以百分號(hào)(%)開(kāi)頭,至少包含一個(gè)轉(zhuǎn)義字符,其他為可選內(nèi)容。表6-1列出了常用的格式符。格式化數(shù)據(jù)格式符含

義%d結(jié)果被格式化成十進(jìn)制整數(shù)%f結(jié)果被格式化成十進(jìn)制浮點(diǎn)數(shù)%e結(jié)果以科學(xué)計(jì)數(shù)法格式輸出%s結(jié)果以字符串輸出%b結(jié)果以布爾值(true或false)形式輸出%c結(jié)果以Unicode字符輸出%n換行格式符,它不與參數(shù)對(duì)應(yīng)。與\n含義相同,但%n是跨平臺(tái)的“%d”用來(lái)輸出十進(jìn)制整數(shù),可以有長(zhǎng)度修飾。如果指定的長(zhǎng)度大于實(shí)際的長(zhǎng)度,則前面補(bǔ)以空格;如果指定的長(zhǎng)度小于實(shí)際的長(zhǎng)度,則以實(shí)際長(zhǎng)度輸出。System.out.printf("year=|%6d|%n",2017);//輸出:year=|2017|“%d”格式符“%d”可以應(yīng)用的數(shù)據(jù)類型有byte、Byte、short、Short、int、Integer、long、Long、BigInteger。下面的語(yǔ)句是錯(cuò)誤的,將產(chǎn)生運(yùn)行時(shí)異常。System.out.printf("%8d",23.45);“%f”用來(lái)以小數(shù)方式輸出??梢詰?yīng)用下列浮點(diǎn)型數(shù)據(jù):float、Float、double、Double、BigDecimal。可以指定格式寬度和小數(shù)位,也可以僅指定小數(shù)位。System.out.printf("|%8.3f|",2017.1234);//輸出:|2017.123|“%f”格式符注意,如果使用格式符“%f”,而參數(shù)為整型數(shù),也會(huì)產(chǎn)生運(yùn)行時(shí)異常,如下面語(yǔ)句是錯(cuò)誤的,因?yàn)?234是整數(shù)。System.out.printf("|%8.3f|",1234);“%e”用來(lái)以科學(xué)計(jì)數(shù)法的格式輸出浮點(diǎn)數(shù)??梢詰?yīng)用下列浮點(diǎn)型數(shù)據(jù):float、Float、double、Double、BigDecimal。可以指定格式寬度和小數(shù)位,也可以僅指定小數(shù)位。System.out.printf("|%10.2e|%n",123.567);//輸出:|1.24e+02|“%e”格式符【注意】

格式符與輸出數(shù)據(jù)必須在類型上嚴(yán)格匹配。對(duì)于%f和%e,指定的數(shù)據(jù)必須是浮點(diǎn)型值。int型值不能匹配%f和%e?!?c”用來(lái)以字符方式輸出。它可以應(yīng)用的數(shù)據(jù)類型有:char、Character、byte、Byte、short、Short,這些數(shù)據(jù)類型都能夠轉(zhuǎn)換成Unicode字符。byteb=65;System.out.printf("b=%c%n",b);//輸出:b=A“%c”格式符“%b”格式符可以用在任何類型的數(shù)據(jù)上。對(duì)于“%b”格式符號(hào),如果參數(shù)值為null,結(jié)果輸出false;如果參數(shù)是boolean或Boolean類型的數(shù)據(jù),結(jié)果是調(diào)用String.valueOf()方法的結(jié)果,否則結(jié)果是true。“%b”格式符byteb=0;Strings=null;System.out.printf("b1=%b%n",b);//輸出:b1=trueSystem.out.printf("b2=%b%n",true);//輸出:b2=trueSystem.out.printf("b3=%b%n",s);//輸出:b3=false“%s”格式符也可以用在任何類型的數(shù)據(jù)上。對(duì)于“%s”格式符號(hào),如果參數(shù)值為null,結(jié)果輸出null;如果參數(shù)實(shí)現(xiàn)了Formatter接口,結(jié)果是調(diào)用args.formatTo()的結(jié)果,否則,結(jié)果是調(diào)用args.toString()的結(jié)果。“%s”格式符如果將上面代碼中“%b”改為“%s”,輸出結(jié)果如下所示。

b1=0b2=trueb3=nullJava語(yǔ)言程序設(shè)計(jì)6.5StringBuilder類StringBuilder類表示可變字符串,即這個(gè)類的對(duì)象內(nèi)容是可以修改的。一般來(lái)說(shuō),只要使用字符串的地方,都可使用StringBuilder類,它們比String類更靈活。6.5.1創(chuàng)建StringBuilder對(duì)象publicStringBuilder():創(chuàng)建一個(gè)沒(méi)有字符的字符串緩沖區(qū),初始容量為16個(gè)字符。此時(shí)length()方法的值為0,而capacity()方法的值為16。publicStringBuilder(intcapacity):創(chuàng)建一個(gè)沒(méi)有字符的字符串緩沖區(qū),capacity為指定的初始容量。publicStringBuilder(Stringstr):利用一個(gè)已存在的字符串對(duì)象str創(chuàng)建一個(gè)字符串緩沖區(qū)對(duì)象,另外再分配16個(gè)字符的緩沖區(qū)。設(shè)有下列代碼:varstr=newStringBuilder("Hello");str對(duì)象在內(nèi)存中的狀態(tài)如圖6-3所示。6.5.1創(chuàng)建StringBuilder對(duì)象StringBuilder類除定義了length()、charAt()、indexOf()、getChars()等方法外,還提供了下列常用方法:publicintcapacity():返回當(dāng)前的字符串緩沖區(qū)的總?cè)萘?。publicvoidsetCharAt(intindex,charch):用ch修改指定位置的字符。6.5.2StringBuilder類常用操作publicStringBuilderappend(Stringstr)publicStringBuilderinsert(intoffset,Stringstr)publicStringBuilderdeleteCharAt(intindex)publicStringBuilderdelete(intstart,intend)publicStringBuilderreplace(intstart,intend,Stringstr)publicStringBuilderreverse():將字符串的所有字符反轉(zhuǎn)。publicStringsubstring(intstart):返回從start開(kāi)始到字符串末尾的子字符串。publicStringsubstring(intstart,intend):返回從start開(kāi)始到end(不包括end)之間的子字符串。publicvoidsetLength(intnewLength):設(shè)置字符序列的長(zhǎng)度。publicvoidsetCharAt(intindex,charch):用ch修改指定位置的字符。6.5.2StringBuilder類常用操作

varss=newStringBuilder("Hello");System.out.println(ss.length());System.out.println(ss.capacity());ss.append("Java");System.out.println(ss);

System.out.println(ss.insert(5,","));

System.out.println(ss.replace(6,10,"World!"));System.out.println(ss.reverse());程序6.4StringBuilderDemo.java在Java語(yǔ)言中不支持運(yùn)算符重載,但有一個(gè)特例,即“+”運(yùn)算符(包括“+=”),它是唯一重載的運(yùn)算符。該運(yùn)算符除用于計(jì)算兩個(gè)數(shù)之和外還用于連接兩個(gè)字符串。當(dāng)用“+”運(yùn)算符連接的兩個(gè)操作數(shù)其中有一個(gè)是String類型時(shí),該運(yùn)算即為字符串連接運(yùn)算,如:6.5.3“+”運(yùn)算符的重載intage=18;vars="Heis"+age+"yearsold.";上述連接運(yùn)算過(guò)程實(shí)際上是按如下方式進(jìn)行的:vars=newStringBuilder("Heis").append(age).append("yearsold.").toString();Java還定義了StringBuffer類,它與StringBuilder類的區(qū)別是:StringBuffer類的實(shí)例是線程安全的,而StringBuilder類的實(shí)例不是線程安全的。如果不需要線程同步,建議使用StringBuilder類。StringBuffer類Java語(yǔ)言程序設(shè)計(jì)6.6案例:判定回文串一個(gè)字符串,如果從前向后讀和從后向前讀都一樣,則稱為回文串。例如,“madam”和“上海海上”都是回文串。編寫(xiě)程序,要求從鍵盤(pán)輸入一個(gè)字符串,判斷該字符串是否是回文串。判定回文串對(duì)于一個(gè)字符串,先判斷該字符串的第一個(gè)字符和最后一個(gè)字符是否相等,如果相等,檢查第二個(gè)字符和倒數(shù)第二個(gè)字符是否相等。這個(gè)過(guò)程一直進(jìn)行,直到出現(xiàn)不相等的情況或者串中所有字符都檢測(cè)完畢。當(dāng)字符串有奇數(shù)個(gè)字符時(shí),中間的字符不用檢查。

publicstaticbooleanisPalindrome(Strings){

intlow=0;

inthigh=s.length()-1;

while(low<high){

if(s.charAt(low)!=s.charAt(high))

returnfalse;low++;high--;

}

returntrue;}程序6.5Palindrome.java

publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.print("請(qǐng)輸入一個(gè)字符串:");Strings=sc.nextLine();

if(isPalindrome(s))System.out.println(s+":是回文。");

elseSystem.out.println(s+":不是回文。");

}Java語(yǔ)言程序設(shè)計(jì)6.7案例:字符串加密解密在密碼學(xué)中,凱撒密碼(Caesarcipher)是一種最簡(jiǎn)單且最廣為人知的加密技術(shù)。它是一種替換加密技術(shù),明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。這個(gè)加密方法是以羅馬時(shí)期愷撒的名字命名。字符串加密解密從鍵盤(pán)上輸入一個(gè)英文字符串(明文),程序運(yùn)行將該字符串加密后輸出(密文)。加密規(guī)則為,字符串中的每個(gè)字母都用它后面的第5個(gè)字母代替,其他字符不變,如A用F代替,a用f代替,對(duì)字母表后面的字母,如V用A代替、Z用E代替。編寫(xiě)解密程序,從鍵盤(pán)輸入密文字符串,程序打印輸出解密后的明文字符串。(1)對(duì)于加密程序,根據(jù)取出字符的范圍,對(duì)字符變換,代碼如下:字符串加密解密if(c>='A'&&c<='Z'||c>'a'&&c<='z'){if(c>'U'&&c<='Z'||c>'u'&&c<='z'){c=(char)(c-21);}else{c=(char)(c+5);}}(2)對(duì)于解密程序,根據(jù)取出字符的范圍,對(duì)字符變換,代碼如下:字符串加密解密if(c>='A'&&c<='Z'||c>'a'&&c<='z'){if(c>='A'&&c<='E'||c>='a'&&c<='e'){c=(char)(c+21);}else{c=(char)(c-5);}}varsc=newScanner(System.in);System.out.print("請(qǐng)輸入一個(gè)字符串:"); varstr=sc.nextLine();System.out.println("原字符串是:"+str);StringBuilderss=newStringBuilder(str);

for(inti=0;i<ss.length();i++){charc=ss.charAt(i);程序6.6Encryption.javaif(c>='A'&&c<='Z'||c>'a'&&c<='z'){if(c>'U'&&c<='Z'||c>'u'&&c<='z'){ c=(char)(c-21);}else{ c=(char)(c+5);}}ss.setCharAt(i,c);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論