Suma ciągu liczb

0

Cześć,
w ramach nauki Javy wymyśliłem sobie zadanie, że policzę sumę ciągu liczb. Jednak pomimo wysiłku i wielu prób znalezienia podpowiedzi w google i na tym forum nie udało mi się, dlatego postanowiłem założyć ten temat z nadzieją, że pomożesz mi znaleźć właściwe rozwiązanie.

public class Matma
{
    public static void main(String[] args)
    {

        int x = 13479;

        String pokazIleMamZnakow = Integer.toString(x);
        System.out.println(pokazIleMamZnakow.length());
        System.out.println(pokazIleMamZnakow.charAt(4));

        int[] tab = new int[pokazIleMamZnakow.length()];

        int suma = Integer.parseInt(pokazIleMamZnakow);
        for(int i=0; i < pokazIleMamZnakow.length(); i++)
        {
            suma += pokazIleMamZnakow.charAt(i);
        }
        System.out.println(suma);
    }
}

Suma wychodzi mi 13743. Podejrzewam, że problem tkwi w toString, ale nie wiem jak z powrotem skonwertować to do int'a.

0

Czym jest ta tajemnicza suma ciągu liczb? Chcesz po prostu sumować 1+3+4+7+9? Czyli chcesz policzyć sumę cyfr liczby x?

0

Faktycznie nie jasno się wyraziłem :). Oczywiście chodzi mi o zsumowanie x czyli 1+3+4+7+9.

0

Opis Twoich działań:

int x = 13479;

String pokazIleMamZnakow = Integer.toString(x); // konwersujesz x do stringa...?
System.out.println(pokazIleMamZnakow.length());
System.out.println(pokazIleMamZnakow.charAt(4));

int[] tab = new int[pokazIleMamZnakow.length()]; // tworzysz tablicę której później nie używasz. Wywalić.

int suma = Integer.parseInt(pokazIleMamZnakow); // parsujesz (!) pokazIleMamZnakow z powrotem do inta.
for(int i=0; i < pokazIleMamZnakow.length(); i++)
{
            suma += pokazIleMamZnakow.charAt(i); // największe WTF na koniec - dodajesz wartości ASCII każdej litery do sumy??
}
System.out.println(suma);
0

O, napisałeś o co Ci chodzi...

int x = 13479;
int suma = 0;
while(x > 0)
{
    suma += x % 10;
    x /= 10;
}
0

@Tezcatlipoca dzięki za pomoc.

Mam jeszcze kilka pytań odnośnie tego przykładu.

  1. Czy da się wyświetlić ilość liczb X bez konwersowania do Stringa?
  2. Czy ta linia int suma = Integer.parseInt(pokazIleMamZnakow); zmieniła na inta?
  3. Dlaczego while a nie for i dlaczego taki warunek?
    while(x > 0)
    {
    suma += x % 10;
    x /= 10;
    }

Być może są to dla Was głupie pytania, ale ja się dopiero uczę i nie wszystko jest dla mnie oczywiste (co widać po przykładnie, który wkleiłem w pierwszym poście :))

0
  1. Nie rozumiem pytania.
  2. Tak
  3. Przeanalizuj jak to działa. Na starcie x = 13479, x % 10 to reszta z dzielenia x przez 10 (tzn. 9), dodajesz 9 do sumy (suma +=x % 10;) i zastępujesz x wynikiem dzielenia x przez 10, w Javie dzielenie liczb całkowitych daje wynik całkowity, zatem x ma teraz wartość 13479/10 = 1347, itd.
0

W pytaniu nr 1 chodzi mi o to, żeby wyświetlić długość liczby x zrobiłem coś takiego:

int x = 13479;
   String pokazIleMamZnakow = Integer.toString(x);
   System.out.println(pokazIleMamZnakow.length());

Zastanawiam się czy bez konwersowania konwertowania można wyświetlić dlugość x?

0

Do kodu podanego przez Tezcatlipoca wystarczy dodać licznik cyfr, który w pętli będziesz zwiększać o jeden.

0

Można

dl = 1+(int)Math.floor(Math.log10(x));

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0