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

question-closed Java pasowanie String'a na int'a zawiesza się.

VPS Starter Arubacloud
0 głosów
262 wizyt
pytanie zadane 4 grudnia 2019 w Java przez elfreits Nowicjusz (220 p.)
zamknięte 4 grudnia 2019 przez elfreits

Witam, piszę ostatnio skrypt na zajęcia z postaw programowania i mam z nim problem, a mianowicie gdy chcę prze konwertować String na Int z zapisaną liczbą binarnie (linia 60) przy liczbie "10000000111" wyskakuje mi error i program się dalej nie wykonuje. Czy wie ktoś jak można rozwiązać ten problem?

error:

Exception in thread "main" java.lang.NumberFormatException: For input string: "10000000111"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at zadanie2.Zadanie2.main(Zadanie2.java:60)

Skrypt:

package zadanie2;

import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class Zadanie2 {
	

	public static void main(String[] args) throws FileNotFoundException {
		
		// podpunkt 2
		
		int licznik = 0;
		int licznik2 = 0;
		int licznik3 = 0;
		String superPierwsza = "";
		String superBPierwsza = "";
		int liczba = 0;
		int suma = 0;
		int suma2 = 0;
		int result2 = 0;
		String result = "";
		String pattern = "01";
		
		
		for (int i=2; i<=1500; i++) {
			for(int j=2; j<i; j++) {
				if(i%j == 0) {
					licznik++;
				}
			}
			
			if(licznik < 2) {
				
				liczba = i;
				while(liczba>0) {
					suma = suma + liczba%10;
					liczba = liczba / 10;
				}
				
				
				
				for(int n=1; n<suma; n++) {
					if(suma%n == 0) {
						licznik2++;	
					}
				}
				
				if(licznik2 < 2) {
					superPierwsza = superPierwsza +i+", ";
					
					liczba = i;
					
					while(liczba>0) {
						
						result = pattern.charAt(liczba % 2) + result;
						liczba = liczba/2;
					}
					
					result2 = Integer.parseInt(result);
					
					while(result2>0) {
						suma2 = suma2 + result2%10;
						result2 = result2 / 10;
					}
					
					for(int n=1; n<suma2; n++) {
						if(suma2%n == 0) {
							licznik3++;	
						}
					}
					
					if(licznik3 < 2) {
						superBPierwsza = superBPierwsza +i+", ";
					}
					
					suma2 = 0;
					licznik3 = 0;
					result = "";
				}
				
				suma = 0;
				licznik2 = 0;
			}
			
			
			licznik = 0;
						
		}
		
		System.out.println(superPierwsza);
		System.out.println(superBPierwsza);
		
		PrintWriter zapis = new PrintWriter("super.txt");
		zapis.print(superPierwsza);
		zapis.close();	
		
		PrintWriter zapis2 = new PrintWriter("superB.txt");
		zapis2.print(superBPierwsza);
		zapis2.close();	


	}

}
komentarz zamknięcia: Problem zlikwidowany.

1 odpowiedź

+2 głosów
odpowiedź 4 grudnia 2019 przez KubenQPL Maniak (62,820 p.)

W javie żeby parsować liczbę binarna na int wystarczy jako drugi argument podać radix

Integer.parseInt("10000000111", 2)

 

komentarz 4 grudnia 2019 przez elfreits Nowicjusz (220 p.)
Niestety nie do końca mi o to chodziło bo funkcja którą mi podałeś konwertuje liczbę 2 na 10, a ja potrzebuję  zsumować wszystkie cyfry liczby dwójkowej.
komentarz 4 grudnia 2019 przez elfreits Nowicjusz (220 p.)

@KubenQPL, Poradziłem sobie już z tym poprzez wyciąganie każdej cyfry ze stringa i zamienianie pojedynczo na Int oraz jednocześnie sumując cyfry w pętli.

komentarz 4 grudnia 2019 przez KubenQPL Maniak (62,820 p.)

Czyli chcesz żeby wynikiem sumowania stringa "10000000111" było 4?

        String value = "10000000111";
        int count = value.replaceAll("0", "")
                .length();

 

Podobne pytania

0 głosów
1 odpowiedź 237 wizyt
pytanie zadane 15 lutego 2021 w C i C++ przez Rainbow99 Początkujący (430 p.)
0 głosów
2 odpowiedzi 416 wizyt
+1 głos
2 odpowiedzi 316 wizyt

92,972 zapytań

141,936 odpowiedzi

321,171 komentarzy

62,301 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...