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

vector wykonuje się za dużo razy

Object Storage Arubacloud
0 głosów
193 wizyt
pytanie zadane 28 października 2017 w Java przez 87kelthuzad Obywatel (1,270 p.)

Witam ma taki problem z programem bo wyjścia takiego:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 0 0 0 0

mam takie:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
6 7 8 9 10
6 7 8 9 10
6 7 8 9 10
6 7 8 9 10
6 7 8 9 10
11 12 13 14 15
11 12 13 14 15
11 12 13 14 15
11 12 13 14 15
11 12 13 14 15
16 0 0 0 0

wydaje mi się ze vector idzie w mojej podwójnej pętli zamiast po i to po j. Ale nie jestem pewien bo kontenerów używam od nie dawna.

import java.util.Scanner;
import java.util.Vector;
 
public class Train {
 
    static Scanner in = new Scanner(System.in);
 
    static int answer= 0;
 
    static Vector<Compartment> v = new Vector<Compartment>();
 
    public static void show (Compartment[] compartment) {
        for (int i = 0; i < compartment.length ; i++) {
            System.out.println();
            compartment[i].showComartment();
        }
    }
 
    public static void showVector() {
        for (int i = 0; i < v.size(); i++) {
            System.out.println();
            v.elementAt(i).showComartment();
        }
    }
 
    public static void addPasarzerowie(int ilePasarzerow, int wagony) {
        int count = 1;
        for (int i = 0; i < wagony ; i++) {
            Compartment c = new Compartment();
            for (int j = 0; j < 5; j++) {
                if (ilePasarzerow%5 > 0 && count <= ilePasarzerow) {
                    c.wagon[j] = count;
                    v.addElement(c);
                }
                else if (ilePasarzerow%5 == 0 && count <= ilePasarzerow ) {
                    c.wagon[j] = count;
                    v.addElement(c);
                }
                count++;
            }
        }
    }
 
    public static void addMorePasarzerow() {
 
    }
 
    public static void main(String[] args) {
 
        int pasazerowie = 0;
        int ileWagonow = 0;
 
        do{
            System.out.println();
            System.out.println("podaj ile ma byc pasazeru");
            pasazerowie = in.nextInt();
 
            if (pasazerowie%5 > 0) {
                System.out.println("tu");
                ileWagonow = pasazerowie/5;
                ileWagonow++;
            }
            else
                ileWagonow = pasazerowie/5;
 
            addPasarzerowie(pasazerowie, ileWagonow/*, compartments*/);
            showVector();
        }while (answer == 0);
    }
}

 

1
komentarz 29 października 2017 przez Aisekai Nałogowiec (42,190 p.)
edycja 29 października 2017 przez Aisekai
Vector? Nie lepiej zapomnieć o tym i używać czegoś z kolekcji? List, setów czy map? Chociaż tutaj pewnie ArrayList byłaby lepsza.

Edit: na miłość boską. Albo używaj Angielskiego albo Polskiego. Chociaż dużo lepiej angielskiego. A Polish-english jak "addMorePasarzerow", jeszcze z błędem, sobie daruj. I nie vektor wykonuje się za dużo razy tylko jak już to metoda.

1 odpowiedź

0 głosów
odpowiedź 29 października 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Linijka 33 i 37 dodajesz do wektora Compartment 5 razy zamiast tylko raz.

I takie dwie małe rady. W twoim programie czesto używasz liczby 5 jako liczba prasazerów w wagoni. Polecał bym takie zmienne wynieść gdzieś to do zewnetrznej zmiennej statycznej bo co jeśli byś chciał miec 6 pasażerów w wagonie? Musiał byś przeorać cały program zamiast zmienic w jednym miescu.

Druga. Polecam zapoznać się z pętlą for each i kolekcjami. Vectora nieużywa się od bardzo dawna. W wiekszosci przypadków lepsza jest array list.

Podobne pytania

+3 głosów
3 odpowiedzi 988 wizyt
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 26 marca 2021 w Java przez Hubert731 Obywatel (1,650 p.)
0 głosów
1 odpowiedź 237 wizyt
pytanie zadane 14 czerwca 2023 w C i C++ przez cpp_enjoyer Nowicjusz (150 p.)

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 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!

...