2016-03-09 58 views
0

我想讓用戶輸入的所有內容大寫,某些字母用數字或符號替換。我試圖利用.replace,但東西不正確。林不知道我做錯了什麼?。取代用符號替代輸入字母

public class Qbert 
{ 
    public static void main(String[] args) 
    { 
     //variables 
     String str; 
     //get input 
     Scanner kb = new Scanner(System.in); 
     System.out.print(" Please Enter a Word:"); 
     //accept input 
     str = kb.nextLine(); 
     System.out.print(""); 
     System.out.println(str.toUpperCase()//make all letters entered uppercase 
     //sort specific letters to make them corresponding number, letter, or symbol 
      + str.replace("A,@")+ str.replaceChar("E","3")+ str.replaceChar ("G","6") 
      + str.replaceChar("I","!")+ str.replaceChar("S","$")+ str.replaceChar ("T","7")); 
    } 
} 
+0

你得到的是什麼?你期望的輸出是什麼? –

+0

我沒有得到任何補償。我收到一個錯誤:沒有找到合適的替換方法,而且它不適用。最後我想對任何輸入的字母要大寫,並在6個字母A E G I式T是不同的符號。我有大寫照顧。 –

+0

@ J.j.Crux編輯答案以適合您的目的:) – ShrtTth

回答

0
public static void main(String... args) { 

    // variables 
    String str; 
    // get input 
    Scanner kb = new Scanner(System.in); 
    System.out.print(" Please Enter a Word:"); 
    // accept input 
    str = kb.nextLine(); 
    System.out.print(""); 
    System.out.println(str.toUpperCase()); // Upper Case 

    System.out.println(str.toUpperCase().replace("A", "@").replace("E", "3") 
      .replace("E", "3").replace("G", "6").replace("I", "!").replace("S", "$").replace("T", "7")); 

} 

這應該工作一樣,你想讓它。希望你覺得這有幫助。

1

String沒有replaceChar方法。您可能想要使用方法replace

而且String.replace()需要兩個參數:

public String replace(CharSequence target, CharSequence replacement) 

這個替換字符串文字目標相匹配的每個子 序列與指定的文字置換序列。從字符串到年底, 例如開頭的 置換進行,以「b」的字符串中替換的「aa」,「AAA」將導致 「BA」,而不是「AB」。

你已經寫了str.replace("A,@")+...代替str.replace("A","@")+...

一兩件事 - 使用一個很好的IDE像Eclipse或IntelliJ IDEA的,他們將突出你的代碼,你有錯誤的部分。

3

在Java中,字符串是不可變的。這意味着修改一個字符串將導致一個新的字符串。例如。

str.replace("a", "b");

這將替換所有出現的 'a' 到一個新的字符串 'B'。原始字符串將保持不受影響。因此,要應用在實際的字符串格式化,我們將不得不寫:

str = str.replace("a", "b");

同樣,如果我們想要做多個替換的話,我們需要追加更換電話一起,例如

str = str.replace("a","b").replace("c", "d");

由這是怎麼回事,如果你想進行置換,在你的代碼的最後System.out的將是:

System.out.println(str.toUpperCase().replace("A","@").replace("E","3") 
    .replace("G","6").replace("I","!").replace("S","$").replace("T","7")); 
+0

但他立即輸出字符串,所以沒關係。從代碼中可能不明顯,因爲在'println'和'+'(字符串連接) – radoh

+0

之間有一個好評。添加次要格式到最終答案。 – goodguy5

0

正如你想的多變化相同的字符串,你只需要使用 str.toUpperCase()。取代()。取代()......這意味着你是在給 str.toUpperCase的輸出()的第一替代功能等 ...

  System.out.println(str.toUpperCase() 
           .replace("A","@") 
           .replace("E","3") 
           .replace("G","6") 
           .replace("I","!") 
           .replace("S","$") 
           .replace("T","7"));