Witam,
Mam problem z zadaniem ze swojego szkolenia, a na chwilę obecną mój instruktor jest nieosiągalny.
Mianowicie mam za zadanie stworzyć program, który :
- Szczytuje z konsoli wprowadzone liczby typu int.
- Program rozbija liczby int na poszczególne cyfry i na koniec podaje ich sumy.
Z pierwszym poleceniem się uporałem, natomiast w drugim mam problem z sytuacją gdzie wpisuję w konsole liczby ujemne, a przecież int to także takie liczby. Poniżej wklejam swój kod:
import java.util.Scanner;
public class SumDigitsInNumber {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Please, enter integer: ");
int number = sc.nextInt();
int sumOfDigits = sumDigitsInNumber(number);
System.out.println(sumOfDigits);
}
public static int sumDigitsInNumber(int number) {
String strValue = String.valueOf(number);
int sum = 0;
int charValue = strValue.length();
for(int i = 0; i < charValue; i++) {
char ch = strValue.charAt(i);
int value = Character.getNumericValue(ch);
sum += value;
}
return sum;
}
}
W metodzie najpierw przerobiłem wartość na typ String, następnie pobrałem wartość liczbową za pomocą valueOf(), określiłem długość Stringa i zastosowałem pętle for, która bada znak po znaku mojego Stringa i sumuje jego wartość liczbową.
Niestety nie mam bladego pojęcia jak wykonać pętle, tak aby uwzględniała znaki ujemne i pierwszą liczbę za minusem traktowała jako liczbę ujemną. Na daną chwilę program z liczby np. -77 daje wynik 13, a powinien dawać 0. wydaje mi się, że ten minus traktowany jest jako -1, czyli pętla zamienia mi po prostu jeden znak "-" na dwa dodatkowe "-1".
Ma ktoś pomysł, jak poprawić mój kod, tak aby działał poprawnie?
Teoretycznie Eclipse nie wykazuje żadnego błędu, ale program nie działa prawidłowo...