Java字串課後作業

來源:互聯網
上載者:User

標籤:win   bd09   ora   port   owa   gtk   via   scsi   gnu   

實驗任務】

1、實驗題目:字串加密

2、實驗內容:古羅馬皇帝凱撒在打仗時曾經使用過以下方法加密軍事情報:

 

3、設計思想:本程式共分為部分:1、利用輸入語句輸入使用者要加密的字串,有兩種方法:(1)利用scanner語句輸入,然後利用.nextLine()轉換為string類型的字串。(2)利用視窗輸入語句,JOptionPane.showInputDialog(“…”),輸入的就是string類型的字串。2、定義一個flag判斷該字串中是否含有不符合規定的字元,如果有在輸出的時候輸出使用者輸入錯誤的字元。3、定義兩個string字串,一個是儲存正確的字元,另一個是儲存不符合規定的字元。利用for迴圈和if語句,將輸入的字元分成兩部分一部分是a-w和A-W,轉換方法為+3。第二部分為x-z和X-Z,轉換方法為—23,得到abc。4、輸出加密後的字串或輸出輸入錯誤的字元,同樣和輸入時一樣有兩種方法,本程式採用的第二種方法。

4、程式流程圖:

 

5、原始碼:Kaisa.java

//字串加密。

//ZhaoXuan Li,October 27th,2016.

 

import javax.swing.JOptionPane;

 

public class Kaisa

{

       public static void main(String[] args)

       {

              String a=JOptionPane.showInputDialog("請輸入要加密的明文:");

              boolean flag=true;

              int s=a.length(),i;

              String output="",output1="";

             

              for(i=0;i<s;i++)

              {

                     if((a.charAt(i)<=‘w‘&&a.charAt(i)>=‘a‘)||(a.charAt(i)<=‘W‘&&a.charAt(i)>=‘A‘))

                     {

                            output+=(char)(a.charAt(i)+3);

                     }

                     else if((a.charAt(i)>=‘x‘&&a.charAt(i)<=‘z‘)||(a.charAt(i)>=‘X‘&&a.charAt(i)<=‘Z‘))

                     {

                            output+=(char)(a.charAt(i)-23);

                     }

                     else

                     {

                            output1+=a.charAt(i);

                            output1+=" ";

                            flag=false;

                     }

              }

             

              if(flag) JOptionPane.showMessageDialog(null,"您輸入的明文為:"+a+"\n譯文為:"+output,"encryption",JOptionPane.PLAIN_MESSAGE);

              else JOptionPane.showMessageDialog(null,"您輸入的"+output1+"不符合要求(不在大小寫字母範圍內!)","errow",JOptionPane.PLAIN_MESSAGE);

       }

}

6、結果:

 

 

 

 

課後作業

課後作業之字串加密、動手動腦之String.equals()方法、整理String類的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用說明、閱讀筆記

Length():擷取字串長度,字串是一個對象,在這個對象中包含length屬性,使用String類中的length()方法可以擷取字串長度。

 

charAt():擷取指定位置的字元。

 

getChars():擷取從指定位置起的子串複製到字元數組中(它有四個參數,1.被拷貝字元在字串中的起始位置 2.被拷貝的最後一個字元在字串中的下標再加1      3.目標字元數組 4.拷貝的字元放在字元數組中的起始下標)。

 

replace():字串替換,通過String類的replace()方法,可以將原字串中的某個字元替換為指定的字元,並得到一個新的字串,該方法的具體定義如下:public String replace(char oldChar,char newChar)。

 

toUpperCase():大寫轉換,在String類中提供用來實現字母大寫轉換的方法,傳回值為轉換後的字串,方法toUpperCase()用來將字串中的所有小寫字母改為大寫字母。

 

toLowerCase()、小寫轉換,在String類中提供用來實現字母小寫轉換的方法,傳回值為轉換後的字串,方法toLowerCase()用來將字串中的所有大寫字母改為小寫字母。

 

trim():去除頭尾空格,通過String類的trim()方法,可以通過去掉字串的首尾空格得到一個新的字串,該方法的具體定義如下:public String trim()。

 

toCharArray():將字串對象轉換為字元數組。

 

動手動腦一

  • ? 請運行以下範例程式碼StringPool.java,查看其輸出結果。如何解釋這樣的輸出結果?從中你能總結出什嗎?

 

實驗結果:

總結:在Java中,內容相同的字串常量(“Hello”)只儲存一份以節約記憶體,所以s0,s1,s2實際上引用的是同一個對象。

編譯器在編譯s2一句時,會去掉“+”號,直接把兩個字串聯接起來得一個字串(“Hello”)。這種最佳化工作由Java編譯器自動完成。

當直接使用new關鍵字建立字串對象時,雖然值一致(都是“Hello”),但仍然是兩個獨立的對象。

 

動手動腦二

再看……

 

為什麼會有上述的輸出結果?從中你又能總結出什嗎?

總結:給字串變數賦值意味著:兩個變數(s1,s2)現在引用同一個字串對象“a”!

String對象的內容是唯讀,使用“+”修改s1變數的值,實際上是得到了一個新的字串對象,其內容為“ab”,它與原先s1所引用的對象”a”無關,所以,s1==s2返回false;

代碼中的“ab”字串是一個常量,它所引用的字串與s1所引用的“ab”對象無關。

String.equals()方法可以比較兩個字串的內容。

 

動手動腦三

請查看String.equals()方法的實現代碼,注意學習其實現方法。

public class StringEquals {

/**

  * @param args the command line arguments

   */

    public static void main(String[] args) {

        String s1=new String("Hello");

        String s2=new String("Hello");

        System.out.println(s1==s2);

        System.out.println(s1.equals(s2));

        String s3="Hello";

        String s4="Hello";

        System.out.println(s3==s4);

        System.out.println(s3.equals(s4));

    }

}

實驗結果:

 

動手動腦四

  • ? String類的方法可以連續調用:

String str="abc";

String result=str.trim().toUpperCase().concat("defg");

  • ? 請閱讀JDK中String類上述方法的源碼,模仿其編程方式,編寫一個MyCounter類,它的方法也支援上述的“級聯”調用特性,其調用樣本為:

MyCounter counter1=new MyCounter(1);

MyCounter counter2=counter1.increase(100).decrease(2).increase(3);

.

實驗代碼:MyCounter.java

//模仿其編程方式,編寫一個MyCounter類,它的方法也支援上述的“級聯”調用特性。

//ZhaoXuan Li,October 27th,2016.

 

public class MyCounter

{

    public static void main(String[] args)

    {

        String s="aqz";

        String result=s.trim().toUpperCase().concat("qwe");

        System.out.println(result);

    }

}

實驗結果

Java字串課後作業

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.