2017-04-07 1 views
-5
import java.util.Scanner; 

public class Shout { 
    public static void main(String[] args) { 
     String str1; 
     String str2 = ""; 

     Scanner keyboard = new Scanner(System.in); 

     StringBuilder output = new StringBuilder(); 

     while (keyboard.hasNextLine()) { 
      str1 = keyboard.nextLine(); 
      StringBuilder sb = new StringBuilder(str1); 
      output.append(sb.toUpperCase().toString()).append("\n"); 
     } 
     System.out.print(output.toString()); 
    } 
} 

私は、EOF(ctrl + d)が大文字になるまで、複数行の入力を変換しようとしています。同じ複数の行をすべて大文字で印刷するために使用できるものは何ですか?たとえば、入力と出力は次のようになります。EOFまで、複数行の文字列を大文字に変換するにはどうすればよいですか?

car 
bus 
taxi 
CAR 
BUS 
TAXI 

大文字で繰り返された行。

+2

コードの問題は何ですか? – Jens

+0

シンプルで、大文字で記述してください。 – mallaudin

+0

このコードは理想的ではありませんが、うまくいくはずです。質問はなんですか? – EJP

答えて

0

各行をハッシュマップに置き、ハッシュマップで同じ文字列が見つかったかどうかをラインチェックで確認します。そうでない場合は、通常どおりに印刷してハッシュマップに追加してください。それ以外の場合は大文字で印刷します。

コードはこれと似ているはずです。

Map<String> lines = new HashMap(); 
while (keyboard.hasNextLine()) { 
     str1 = keyboard.nextLine(); 
     StringBuilder sb = new StringBuilder(str1); 
     if(lines.get(str1)==null){ 
      // not found, put to hashmap and print normally. 
      lines.put(str1); 
      output.append(sb.toString().append("\n"); 
     }else{ 
      // found, so this line is repetitive, print the uppercase version. 
      output.append(sb.toUpperCase().toString()).append("\n"); 
     } 
} 
関連する問題