2017-07-22 23 views
0

输入来自控制台作为单线,保持的数字。在每个数字后面有一个字符(S,H,D或C)。需要对数字进行求和,并且只有当两个或更多个字符顺序出现时,才会将总和乘以字符序列的计数。如何对数字求和并将其乘以它们的序列数(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

感谢了很多人! :) –

相关问题