• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiana liczby w postaci stringa na zmienna typu int

0 głosów
329 wizyt
pytanie zadane 8 maja 2020 w Java przez jasper93 Obywatel (1,310 p.)
Witam, ostatnio przerabiam metody z użyciem Stringa. Wszystko szło ok do czasu, gdy napotkałem takie zadanie:

https://ibb.co/8PvYpkJ
Wyciągniecie samej liczby nie jest problemem, ale gorzej już takimi znakami jak +,-,*. Nie znam innych kolekcji poza tablicami, po proszę o podpowiedź jak podejść do tego tematu?

3 odpowiedzi

0 głosów
odpowiedź 9 maja 2020 przez Czarus Obywatel (1,310 p.)

W c++ wiem jak to zrobić lecz na javie sie nie znam i może mogę choć trochę pomóc od strony teorii. Otóż np znak + w ASCII to 43 a - to 45 (na google zobacz tablicę ASCII), są one zapisane jako cyfry. Trzeba posłużyć się rzutowaniem, w C++ wystarczy napisać w nawiasie zmienną na którą chcesz rzutować 

zmienna_int = (int) zmienna _string

wtedy w zimienna_int będzie wartość ascii dla danego znaku i wystarczy rzutować zmienną int na char który pokaże ten znak

cout << (char) zmianna_int;

ale jak mówiłem to w C++ nie wiem jaka jest zasada działania na javie (mam nadzieje że taka sama)

Mam nadzieję że jakkolwiek pomogłemsmiley, dobrej nocy życzę 

komentarz 11 maja 2020 przez adrian17 Mentor (355,240 p.)

zmienna_int = (int) zmienna _string

To... nie ma sensu w C++ie i w ogóle się nie skompiluje.

0 głosów
odpowiedź 11 maja 2020 przez mibdbz Gaduła (4,300 p.)
Spróbuj użyć backslash przed znakiem. Np.

"\*" albo "\\"

Backslash w stringu oznacza to, że następny znak jaki nastąpi bezpośrednio po nim będzie specjalny. Czy jakoś tak. Używa się tego do znaku następnej Lini \n czy znaku apostrofu \" albo innego backslasha \\. Spróbuj, może zadziała.
0 głosów
odpowiedź 11 maja 2020 przez adrian17 Mentor (355,240 p.)

Rozwiązanie mocno zależy od tego, czego nauczyciel oczekuje, ale...

ale gorzej już takimi znakami jak +,-,*.

To właśnie nie jest problem - zadanie mówi, żeby je zignorować, bo nie są częścią zapisu liczby (poza -/+ na początku). Więc "123+4" i "123XX" dadzą ten sam wynik - 123.

Moja ("na sucho") propozycja: użyć zwykłej Javowej metody parsującej inta, tylko wywoływać ją po kolei na coraz krótszych kawałkach stringa, aż się uda. To znaczy "123XX" (nieudane), "123X" (nieudane), "123" (udane parsowanie, daje 123). Może nie super wydajne, ale brzmi prosto w realizacji.

Podobne pytania

0 głosów
3 odpowiedzi 366 wizyt
pytanie zadane 26 lipca 2016 w C i C++ przez hakiros54 Obywatel (1,160 p.)
0 głosów
1 odpowiedź 1,166 wizyt
pytanie zadane 5 maja 2020 w C i C++ przez pseudoinformatyczka Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 771 wizyt

93,766 zapytań

142,723 odpowiedzi

323,374 komentarzy

63,360 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...