2017-07-22 12 views
0

入力は、数字を保持する1行としてコンソールから取得されます。各数字の後に私は文字(S、H、DまたはC)を持っています。数字を合計する必要があり、2つ以上の文字が連続して来た場合にのみ、合計に文字のシーケンスの数を掛ける必要があります。例えば数を合計し、シーケンス(Java)の数で掛けるにはどうすればよいですか?

2C 3C 5C 15S 10H 12H 2S 14D(2 + 3 + 5) * 3 + 15 +(10 + 12)* 2 + 2 + 14 = 105を有します

私だけ抽出していないと数字を合計し、より多くの何もすることができます。

public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     String[] input = br.readLine().split(" "); 
     int sum = 0; 

     for (String s : input) { 
      String number = s.substring(0, s.length() - 1); 
      sum += Integer.parseInt(number); 
     } 
     System.out.println(sum); 
}  

ありがとうございます!

+1

を行いますなぜあなたは、Javaを使用する必要がありますか? そのプロジェクト要件か、最もよく知られた言語ですか? –

+1

どのように?いくつかのコードを書くことによって。何を試しましたか?あなたはどこにいるのですか?私たちを見せて、あなたの*具体的な問題をよりよく説明してください。 – Andreas

+0

あなたが合計を抽出したので、問題はカウントを得ることに直面していますか? –

答えて

1

これはトリック

public static void main(String[] args) throws IOException { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

    String[] input = br.readLine().split(" "); 
    int sum = 0; 
    String tmpLetter = null; 
    int tmpSum = 0; 
    int count = 0; 

    for (String s : input) { 
     int number = Integer.parseInt(s.substring(0, s.length() - 1)); 
     String letter = s.substring(s.length() - 1); 

     if(tmpLetter == null || tmpLetter.equals(letter)){ 
      count++; 
      tmpSum += number; 
     } else { 
      sum += tmpSum * count; 
      count = 1; 
      tmpSum = number; 
     } 
     tmpLetter = letter; 
    } 
    sum += tmpSum * count; 
    System.out.println(sum); 
} 
+0

私はそれが '文字列の文字= s.substringすべきだと思います(s.length() - 1)' – Philipp

+0

はいあなたは正しい –

+0

おかげでたくさんの男! :) –

関連する問題