2015-05-13 2 views
0

Как я могу получить сумму цифр в строке нижеВычислить сумму цифр в смешанных строках

1..4..2..6..2.212.4.11|1..4..2..6..2.|.212.4.111..2.3.444 

Я попытался это

String plrinfo[]=sLine.split("\\|"); 


      for (String plrinfo1:plrinfo) { 

       System.out.println(plrinfo1); 

      String[] numbers=plrinfo1.split("\\."); 
      int sum=0; 
       for(int i=0;i<numbers.length;i++){ 
        System.out.println(numbers[i]); 


      sum=sum+Integer.parseInt(numbers[i]); 
      return sum 

Но это не работает

+0

Вы должны взять на себя работу мечения языка, и форматирование примера – jcoppens

+0

Каковы результаты вашего кода? Можете ли вы отлаживать код за строкой, чтобы увидеть, какая строка точно вызывает проблемы? –

+0

ошибка-исключение в потоке "основного" java.lang.NumberFormatException: Для ввода строки: "" \t в java.lang.NumberFormatException.forInputString (Unknown Source) \t на java.lang.Integer.parseInt (Unknown Source) \t at java.lang.Integer.parseInt (Неизвестный источник) \t на playerinfo.BatsmanMain.main (BatsmanMain.java:42) –

ответ

0
import java.util.Scanner; 

public class Test { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner s = new Scanner(System.in); 
    int sum = 0; 
    String ip = s.nextLine(); 
    //replace . with space 
    String ip1 = ip.replace(".", " "); 
    //replace | by space 
    String ip2 = ip1.replace("|", " "); 
    //split string by spaces 
    String[] fin = ip2.split("\\s+"); 
    for (int i = 0; i < fin.length; i++) { 
     sum = sum + Integer.parseInt(fin[i]); 
    } 
    System.out.println(sum); 
} 

} 
0

Вы можете использовать регулярное выражение (регулярное выражение) в качестве разделителя строк. Этот разделитель содержит один или несколько «.». или "|".

UPDATE: Добавить функцию sumIndividualDigits (String str), чтобы получить сводку каждой цифры числа.

Пример кода:

public class CalculateNumber { 

private static final String TEXT = "1..4..2..6..2.212.4.11|1..4..2..6..2.|.212.4.111..2.3.444"; 

private static final String REGEX = "(\\.|\\|)+"; 

public static void main(String[] args) { 
    String[] numbers = TEXT.split(REGEX); 
    int sum = 0; 
    for(String e : numbers) { 
//   sum += Integer.valueOf(e); 
//   System.out.print(e + ",");  
     int part = sumIndividualDigits(e); 
     System.out.print(part + ","); 
     sum += part; 

    } 
    System.out.println("\nSum: " + sum); 
} 

public static int sumIndividualDigits(String str) { 

    char[] digits = str.toCharArray(); 
    int sum = 0; 

    for(char c : digits) { 
     int digit = Integer.valueOf(String.valueOf(c)); 
     sum += digit; 
    } 
    return sum; 
} 

} 

Выход:

1,4,2,6,2,5,4,2,1,4,2,6,2,5,4,3,2,3,12, 
Sum: 70 
+0

, но я хочу 1 + 4 + 2 + 6 + 2 + 2 + 1 + 2 + 4 + 1 + 1 + 1..means добавляет все отдельные цифры. –

+0

@nayak_ultimate, см. Мое обновление – yellowB

+0

сейчас это работает..thanks @yellowB –

Смежные вопросы