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

Java- tablice

Object Storage Arubacloud
0 głosów
303 wizyt
pytanie zadane 9 lutego 2017 w Java przez MarcinBerlin Początkujący (360 p.)
Witam, pytanie odnośnie Javy; jak stworzyć tablicę long, aby była dynamiczna (bez podawania wielkości. Tak żeby tablica dostosowała się do wielkości liczby), następnie wczytać liczbę ze strumienia we i wpisać ją do tej tablicy? Pozdrawiam
komentarz 9 lutego 2017 przez MarcinBerlin Początkujący (360 p.)
I jeszcze pytanie, czy do sprawdzania pierwszości liczb powinienem stworzyć typ BigInteger, czy da się to zmiescić w long?

To mój pierwszy program w Java i pierwszy po kilku latach bez dotykania programowania, więc trywialność pytań uzasadniona ;)

3 odpowiedzi

+1 głos
odpowiedź 9 lutego 2017 przez KubenQPL Maniak (62,820 p.)
Może łatwiej będzie użyć czegoś z Collection's? Np ArrayList, poprostu dodajesz do tego elementy a wielkości nie musisz deklarować.
komentarz 9 lutego 2017 przez MarcinBerlin Początkujący (360 p.)
Użytkownik poda tylko raz, ale że to będzie algorytm do sprawdzania, czy liczba jest pierwszą to potrzebuję dynamicznej. Jednak już przeczytałem, że Array jest wolne jak się nie zdefiniuje wielkości przybliżonej na początku.

 

Problem w tym, że użytkownik może podać 8, ale tez może podać 874236487264826 347826347826478 i dlatego nie mogę podać nawet przybliżonej wartości.

Ogólnie dwa dni ogarniałem różne algorytmy dla liczb pierwszych i w końcu wymyśliłem swój, bo tamte potrzebują zbyt wielu kroków przy wprowadzeniu wielkich liczb.

Kolejny problem to chce aby algorytm był lekki.
komentarz 9 lutego 2017 przez KubenQPL Maniak (62,820 p.)

"słyszałem" - a próbowałeś?

Po co ci tablica do sprawdzania czy liczba jest liczbą pierwszą? O ile dobrze pamiętam to "lekki" algorytm na liczbę pierwszą nie potrzebuje tablicy.

 LINK pod tym adresem masz chyba najprostszy algorytm na sprawdzenie czy liczba jest liczbą pierwszą.

komentarz 9 lutego 2017 przez MarcinBerlin Początkujący (360 p.)
Bo wymyśliłem własny ;)

w tym linku jest standardowy

[2...n√]

a co jeżeli liczba będzie miała 50 cyfr?
+1 głos
odpowiedź 9 lutego 2017 przez Mateusz51 Nałogowiec (28,180 p.)

Użyć kolekcji takich jak ArrayList lub innych zależnie od twoich potrzeb. 

//tworzenie
List<long> list = new ArrayList<long>();

// dodawanie elementu

list.add(7);

//pobieranie elementu

list.get(0);

Zamiast typu podstawowego możesz użyć klasy Opakowującej Long.

1
komentarz 9 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)
Może, a nawet musi, bo inaczej się kod nie skompiluje.
1
komentarz 9 lutego 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Dawno już nie kożystałem z typów prostych i nie pamietam czy to konieczność czy wybór.
+1 głos
odpowiedź 9 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)
edycja 9 lutego 2017 przez Adrian Spora

Użyj do tego implementacji List'y ArrayList. Problem jest taki, że jest to klasa typu generycznego i nie może przyjmować prymitywnego typu long. Musi mieć klasowy odpowiednik - Long. Przykładowe użycie wygląda tak:

List<Long> numbers = new ArrayList<>();

numbers.add(8.97);
numbers.add(-0.97);
numbers.add(12.37);


numbers.forEach(number -> {
           System.out.println(number + "\n");
});

 

Poza tym klasa ArrayList udostępnia bardzo dużo przydanych metod, którą pełną listę możesz znaleźć tutaj:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

komentarz 9 lutego 2017 przez MarcinBerlin Początkujący (360 p.)
Dobre dzięki.

W międzyczasie wypociłem cos takiego:

 

        long nummberE;
        Scanner input= new Scanner(System.in);    
        
        System.out.println("Give me the nummber: ");
        nummberE=input.nextLong();
        ArrayList<Long> array= new ArrayList<Long>(nummberE);

 

I wyskakuje, ze Array jest undefined.
komentarz 9 lutego 2017 przez MarcinBerlin Początkujący (360 p.)
A możesz podać jakiś program do sprawdzania ile kroków wykona procesor w zalezności od złożoności obliczeń?
komentarz 9 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)

ArrayList<Long> array= new ArrayList<Long>(nummberE);

Konstruktor przyjmujący jeden element tworzonej listy nie istnieje. Istnieje konstruktor, który przyjmuje początkowy rozmiar, a nie o to Ci przecież chodzi. Ew. mozesz zrobić coś takiego, żeby stworzyć listę z jednym elementem.

ArrayList<Long> array= Arrays.asList(nummberE);

A drugiego pytania nie rozumiem. Nie wiem czy chodzi Ci o instrukcje, które wykona JVM czy o instrukcje procesora. Nie znam żadnego takiego programu.

komentarz 10 lutego 2017 przez MarcinBerlin Początkujący (360 p.)
Dziękuję za odpowiedź.

Odnośnie drugiego pytania, to chodzi mi o obciążenie procesora przez mój algorytm. Chciałbym go porównać ze standardowymi rozwiązaniami (algorytmami), które można znaleźć w internecie.

Podobne pytania

0 głosów
1 odpowiedź 240 wizyt
pytanie zadane 4 kwietnia 2021 w Java przez Hubert731 Obywatel (1,650 p.)
0 głosów
0 odpowiedzi 1,086 wizyt
pytanie zadane 20 marca 2020 w Java przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 2 marca 2019 w Java przez mn130496 Gaduła (3,530 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...