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

Java-"tablice"

VPS Starter Arubacloud
0 głosów
549 wizyt
pytanie zadane 26 listopada 2017 w Java przez Szczurek431 Początkujący (330 p.)

Mam cos takiego: 

public class Program{

public static void main(String[]args){

float[] tab=new float[10];
for(int i =0;i<tab.length;i++){
tab[i]=(float)(Math.random()*6);
}
}
}

/*Jak zrobić dwie tablice które będą mieścić elementy tablicy tab?-jedna elementy z parzystych indeksow tablicy tab a droga z nieparzystych

float[] tab2=new float[5];

float[]tab3= new float[5];

if(i%2==0)

tab2={tab[i]};

to nie jest propozycja kody ale moja jedyna koncepcja, tzn. wiem ze musze zrobic dwie nowe tablice, stworzyc warunek dotyczacy parzystosci licznika indeksow tablicy tab a nastepnie to jakos wstawic do nowych tablic. Jak to zrobic?

*/

2 odpowiedzi

+1 głos
odpowiedź 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)
wybrane 27 listopada 2017 przez Szczurek431
 
Najlepsza

Sprawdzasz po prostu w pętli czy index parzysty czy nie i uzupełniasz nowe tablice danymi:

for(int j=0; j != tab.length; j++) {
    if (j % 2 == 0) {
        //dodaj parzysty
    } else {
        //dodaj nieparzysty
    }
}

Edit:
Gotowiec, ze względu na to, że się spieszysz ;)

      float[] tab2=new float[5];
      float[] tab3= new float[5];

      int n = 0;
      int m = 0;

      for(int j=0; j != tab.length; j++) {
        if (j % 2 == 0) {
          tab2[n++] = tab[j];
        } else {
          tab3[m++] = tab[j];
        }
      }

      System.out.println(Arrays.toString(tab));
      System.out.println(Arrays.toString(tab2));
      System.out.println(Arrays.toString(tab3));

 

komentarz 26 listopada 2017 przez Wiciorny Ekspert (269,120 p.)
edycja 26 listopada 2017 przez Wiciorny
jest to prototyp :) bo generalnie błędna jest twoja implementacja.Nie mozesz operować jednym indeksem[ j] , bo  gdy 10 liczba będzie nieparzysta, a  np 9 parzystych wcześniej się pojawi :), to nie zmieścisz do tablic o rozmiarze  5 :) obecnej liczby, gdyż jesteś na pozycji nr 9.  

Nawet jeśli zadeklarujemy dwie tablice o tej długości jak wyjściowa [ 10 ]  :) to pozostałe 9 pozycji tablicy pierwszej np  pierwszej jest puste i wstawiasz nowy element dopiero na ostatnią pozycje ....

Dodanie licznika  pomoże i  dodawanie elementu zależnie od wartości licznika czyli ilości juz dodanych uprzednio elementów ;]
1
komentarz 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)
Nic nie zrozumiałem z tego co napisałeś. Plątają Ci się jakieś losowe wyrazy w zdaniach. Dla mnie to nie ma sensu. Popraw tak żeby dało się przeczytać.

I nie rozumiem za bardzo w czym problem. On nie mówi o żadnych (nie)parzystych liczbach tylko o (nie)parzystych indeksach.
komentarz 26 listopada 2017 przez Wiciorny Ekspert (269,120 p.)
twoje rozwiązanie nie ma sensu :) ... poprawiłem to co napisałem, czytaj ze zrozumieniem.
komentarz 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)
Czy ty w ogóle przeczytałeś o co on pyta?
komentarz 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)
Szczurek431, dodałem gotowe rozwiązanie, łap ;)
0 głosów
odpowiedź 26 listopada 2017 przez Wiciorny Ekspert (269,120 p.)
edycja 26 listopada 2017 przez Wiciorny
List<Integer> listaParzysta= new ArrayList<>();
List<Integer> listaNieparzysta= new ArrayList<>();

for(int el: tab) {
         // dla każdego elementu z tablicy jesli jest podzielny
   if(el %2 ==0 ) {
            // dodaj element 
          listaParzysta.add(el);
    }
else listaNieparzysta.add(el);
// dla przypadku gdy element jest nieparzysty 
}

w sytuacji gdy tab to tablica to prymitywna tablica to : for (int i=0;i<tab.length;i++) { klasyczne działanie if/else z dodawaniem elementów z tym, że dodać musisz iterator najlepiej licznik dodatkowy, który zwiększysz kiedy dodasz jakiś element do listy, tak żeby nie umieszczac elementów na np. 3 pozycji [ gdy i=3] a dopiero 1 raz wystapila liczba mozesz uzyc dodania do list, np listaParzysta.add(tab[i]); wtedy lepsza gwarancja bez iteratora dodatkowego }

Po pierwsze: jaką masz pewność że liczb bedzie 5 parzystych np ? a nie 9 parzystych a 1 nieparzysta w wyjściowej 10 elementowej ?  Więc tworzenie tablic 5 el. jest błędne, a 10 el. to marnowanie pamięci 

Lepsze użycie zapewnia List<Integer> lista= new ArrayList<>();

komentarz 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)

Jak zrobić dwie tablice które będą mieścić elementy tablicy tab?-jedna elementy z parzystych indeksow tablicy tab a droga z nieparzystych

Czy ty w ogóle przeczytałeś o co on pyta? Napisałem Ci to, a ty nadal o parzystych liczbach crying

komentarz 26 listopada 2017 przez Szczurek431 Początkujący (330 p.)
Chodzi o liczby kryjace sie pod dwoma- w tym przypadku- "rodzajami"  indeksu. Liczby z nieparzystymi indeksami wstawiam do tablicy tab2, a liczby z parzystymi indeksami wstawiam do tablicy tab3. Znam koncepcje ale nie wiem jak sie łączy te tablice itd. Jeden przyklad by mi bardzo rozjasnil- bo metodą prob i bledow chyaba nie zdaze do rana.
komentarz 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)
@Szczurek431 No podesłałem Ci moją propozycję, co jest nie jasne?
komentarz 26 listopada 2017 przez Szczurek431 Początkujący (330 p.)
public class Program{
 
public static void main(String[]args){

float[] tab=new float[10];
float[]tab2=new float[5];
float[]tab3= new float[5];

float p=0;
float n=0;



for(int i =0;i<tab.length;i++){
tab[i]=(float)(Math.random()*6);
}
for(int j=0;j<tab.length;j++){
if(j%2==0){
System.out.println("Liczby z parzystych indeksow: "+tab[j]);
}
else{
System.out.println("Liczby z nie parzystych indeksow: "+tab[j]);
}
}

//O to chodzilo? to jakies dziwne jest 




}
}

 

komentarz 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)

Zobacz jeszcze raz moją odpowiedz, dostałeś gotowca smiley

komentarz 26 listopada 2017 przez Szczurek431 Początkujący (330 p.)
symbol:   variable tab
  location: class Program
Program.java:41: error: cannot find symbol
System.out.println(Arrays.toString(tab));
                   ^
  symbol:   variable Arrays
  location: class Program
Program.java:42: error: cannot find symbol
System.out.println(Arrays.toString(tab2));
                   ^
  symbol:   variable Arrays
  location: class Program
Program.java:43: error: cannot find symbol
System.out.println(Arrays.toString(tab3));
                   ^
  symbol:   variable Arrays
  location: class Program
7 errors

Nie chce mi sie uruchomic a poza tym nie wiem co to jest "Arrays.toString"
komentarz 26 listopada 2017 przez Codeboy Stary wyjadacz (12,120 p.)

Oj boziu laugh Ah Ci początkujący. To metoda do przerobienia tablicy na stringa. Potrzebna do printowania jej w konsoli. Jeśli tego nie potrzebujesz to to usuń, a jak tak to musisz zaimportować pakiet przed definicją klasy:

 

import java.util.Arrays;

 

komentarz 26 listopada 2017 przez Szczurek431 Początkujący (330 p.)

działą w koncu surprise

 

Dzieki za pomoc yes

Podobne pytania

0 głosów
2 odpowiedzi 1,779 wizyt
pytanie zadane 6 marca 2019 w Java przez krystian1997 Obywatel (1,020 p.)
0 głosów
2 odpowiedzi 193 wizyt
pytanie zadane 25 czerwca 2018 w Java przez Lampards Obywatel (1,130 p.)
0 głosów
1 odpowiedź 170 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...