Forum » Programiranje » (Java) Iskanje manjkajoči podatkov v tabeli
(Java) Iskanje manjkajoči podatkov v tabeli
Usek ::
Živijo.
Dobila sem nalogo, ki ji z osnovami programskega jezika Java, nisem kos. Potrebujem vašo pomoč! Za vsak namig se vsem zelo lepo zahvaljujem že vnaprej.
Naloga:
- Imam tabelo; v vsaki vrstici so 4 podatki (dan, ura, SO2, hitrost vetra); gre za n število podatkov.
- Določeni podatki v stolpcu SO2 in hitrost vetra manjkajo.
- Vprašanje: Kako ugotoviti v katerih vrsticah podatki manjkajo?
Potrebujem izpis števila vrstic in točno katera vrstica je tista, kjer podatki manjkajo?
Dan ura SO2 hitrost
1 1 1.2 3
1 2 2.8
1 3 2
1 4 2
1 5 3.5 1.8
Nimam ideje kako se problema lotiti. Začela sem s ArrayList in branjem po vrsticah, ampak ne pridem nikamor… Če definiram String, ki omogoča branje po vrsticah, ne moram definirati prave dolžine vrstice, ki bi mi lahko služila kot variabla za določevanje v kateri vrstici manjkajo podatki.
Če definiram Int za vse skupaj podere, ko program naleti na prazno mesto v datoteki.
Potem sem poskusila z definiranjem Objecta, ampak ponovno ni ok, ker prazno mesto nadomesti z nasledijo številko, ki pa pripada drugemu stolpcu kot prazno mesto ….
Prosila bi za smernice kako se zadeve lotiti, ker v nadaljevanju sledi nadomeščanje praznih mest z interpolacijo in bi želela zadevo že od začetka peljati na pravi način, da se mi ne bo potem vse skupaj sesulo. Opozorila bi, da gre za veliko število podatkov.
Vsi napotki so dobrodošli … tudi katero literaturo naj vzamem v roko, če želim nalogi kos … Potrebujem usmeritev, ker sem se čisto zgubila v kupici variant in nimam pojma kako naprej … Hvala še enkrat.
Dobila sem nalogo, ki ji z osnovami programskega jezika Java, nisem kos. Potrebujem vašo pomoč! Za vsak namig se vsem zelo lepo zahvaljujem že vnaprej.
Naloga:
- Imam tabelo; v vsaki vrstici so 4 podatki (dan, ura, SO2, hitrost vetra); gre za n število podatkov.
- Določeni podatki v stolpcu SO2 in hitrost vetra manjkajo.
- Vprašanje: Kako ugotoviti v katerih vrsticah podatki manjkajo?
Potrebujem izpis števila vrstic in točno katera vrstica je tista, kjer podatki manjkajo?
Dan ura SO2 hitrost
1 1 1.2 3
1 2 2.8
1 3 2
1 4 2
1 5 3.5 1.8
Nimam ideje kako se problema lotiti. Začela sem s ArrayList in branjem po vrsticah, ampak ne pridem nikamor… Če definiram String, ki omogoča branje po vrsticah, ne moram definirati prave dolžine vrstice, ki bi mi lahko služila kot variabla za določevanje v kateri vrstici manjkajo podatki.
Če definiram Int za vse skupaj podere, ko program naleti na prazno mesto v datoteki.
Potem sem poskusila z definiranjem Objecta, ampak ponovno ni ok, ker prazno mesto nadomesti z nasledijo številko, ki pa pripada drugemu stolpcu kot prazno mesto ….
Prosila bi za smernice kako se zadeve lotiti, ker v nadaljevanju sledi nadomeščanje praznih mest z interpolacijo in bi želela zadevo že od začetka peljati na pravi način, da se mi ne bo potem vse skupaj sesulo. Opozorila bi, da gre za veliko število podatkov.
Vsi napotki so dobrodošli … tudi katero literaturo naj vzamem v roko, če želim nalogi kos … Potrebujem usmeritev, ker sem se čisto zgubila v kupici variant in nimam pojma kako naprej … Hvala še enkrat.
videc ::
Greš k profesorju na govorilne ure in ga vprašaš oziroma mu poveš, da nimaš pojma. Ali vprašaš kakšnega sošolca.
videc ::
Tudi v srednji šoli imajo profesorji govorilne ure.
Če imaš tabelo greš v for zanki od 1 do zadnje vrstice in znotraj te for zanke daš drugo for zanko od 1-4 in bereš vrednosti. Če vrednosti v katerem polju ni, izpišeš celotno vrtico.
Saj ni tako težko.
Moraš pa vedeti kakšnega tipa so podatki, glede na to, kar si podala gor, bi rekel, da double.
Verjetno ti bo kdo še rekel, da je Vector boljši kot Arraylist.
Če imaš tabelo greš v for zanki od 1 do zadnje vrstice in znotraj te for zanke daš drugo for zanko od 1-4 in bereš vrednosti. Če vrednosti v katerem polju ni, izpišeš celotno vrtico.
Saj ni tako težko.
Moraš pa vedeti kakšnega tipa so podatki, glede na to, kar si podala gor, bi rekel, da double.
Verjetno ti bo kdo še rekel, da je Vector boljši kot Arraylist.
HotBurek ::
Kje pa se nahajajo podatki; v txt/csv datoteki ali kakšnem SQL-u?
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
snak3 ::
Najlažja varianta je, kot je rekel pecorin, da bereš po vrsticah in vsako vrstico s split() metodo (pogooglaj dokumentacijo za String.split()) pretvoriš v tabelo stringov. Potem vidiš kakšno je število podatkov in si shraniš podatke v ArrayList.
Koliko je pa približno podatkov?
Koliko je pa približno podatkov?
Invictus ::
Če poznaš strukturo podatkov, je najbolje uporabiti RegEx...
Le ta v večini jezikov vrne število najdenih podatkov in njihove sparsane vrednosti...
Le ta v večini jezikov vrne število najdenih podatkov in njihove sparsane vrednosti...
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
Zgodovina sprememb…
- spremenil: Invictus ()
HotBurek ::
Par stvari. Za split po stolpcih bi rajši uporabil znak "|", kot pa space. Ter, vsaka vrstica naj bi imela "prvi stolpec" unique id. Tako se pri branju željene vrstice sklicuješ na ta id, in ne na številko vrstice v fajlu.
Npr:
id|dan|ura|SO2|hitrostVetra
0|1|1|1.2|3
1|1|2|2.8
2|1|3|2
3|1|4|2
4|1|5|3.5|1.8
Evo en primer v Python-u. Ni isto, kot Java, se da pa naredit easy rewrite.
Npr:
id|dan|ura|SO2|hitrostVetra
0|1|1|1.2|3
1|1|2|2.8
2|1|3|2
3|1|4|2
4|1|5|3.5|1.8
Evo en primer v Python-u. Ni isto, kot Java, se da pa naredit easy rewrite.
#!/usr/bin/python3.5 # import import os; datapath = "/home/user/Documents/naloga.txt"; if os.path.exists(datapath): # read data from file and split by new line file = open(datapath, "r"); lines = file.read().split("\n"); file.close(); # line counter linecount = 0; # arrays for ok and miss linesok = []; linesmiss = []; # read line by line for line in lines: # remove trailing/ending " space " line = line.strip(); # if row is not blank if len(line) > 0: # change column split char to "|" line = line.replace(" ", "|"); # count columns length = line.split("|"); # if less then 4 something is missing if len(length) < 4: # add to missing array linesmiss.extend(["**|line=" + str(linecount) + "|" + line]); else: # add to ok array linesok.extend(["ok|line=" + str(linecount) + "|" + line]); # linecount ++1 even for blank lines linecount = linecount + 1; # print out missing lines for line in linesmiss: print(line); # print out ok lines for line in linesok: print(line);
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
pecorin ::
To:
je čisto enako kot:
razen, da je pač druga malo hitrejša, ker delaš eno stvar manj.
line = line.replace(" ", "|"); length = line.split("|");
je čisto enako kot:
length = line.split(" ");
razen, da je pač druga malo hitrejša, ker delaš eno stvar manj.
Usek ::
Še enkrat bi se vam rada zahvalila. Predvsem tebi pecorin in tebi HotBurek.
Stvari so po tem, ko sem dobila namig/e in pomoč (tvojo HotBurek), postale jasne in tudi preostali del naloge je stekel kot po maslu ...
Resnično hvala ... Se kmalu spet beremo
Stvari so po tem, ko sem dobila namig/e in pomoč (tvojo HotBurek), postale jasne in tudi preostali del naloge je stekel kot po maslu ...
Resnično hvala ... Se kmalu spet beremo
noraguta ::
Par stvari. Za split po stolpcih bi rajši uporabil znak "|", kot pa space. Ter, vsaka vrstica naj bi imela "prvi stolpec" unique id. Tako se pri branju željene vrstice sklicuješ na ta id, in ne na številko vrstice v fajlu.
Npr:
id|dan|ura|SO2|hitrostVetra
0|1|1|1.2|3
1|1|2|2.8
2|1|3|2
3|1|4|2
4|1|5|3.5|1.8
Evo en primer v Python-u. Ni isto, kot Java, se da pa naredit easy rewrite.
#!/usr/bin/python3.5
# import
import os;
datapath = "/home/user/Documents/naloga.txt";
if os.path.exists(datapath):
# read data from file and split by new line
file = open(datapath, "r");
lines = file.read().split("\n");
file.close();
# line counter
linecount = 0;
# arrays for ok and miss
linesok = [];
linesmiss = [];
# read line by line
for line in lines:
# remove trailing/ending " space "
line = line.strip();
# if row is not blank
if len(line) > 0:
# change column split char to "|"
line = line.replace(" ", "|");
# count columns
length = line.split("|");
# if less then 4 something is missing
if len(length) < 4:
# add to missing array
linesmiss.extend(["**|line=" + str(linecount) + "|" + line]);
else:
# add to ok array
linesok.extend(["ok|line=" + str(linecount) + "|" + line]);
# linecount ++1 even for blank lines
linecount = linecount + 1;
# print out missing lines
for line in linesmiss:
print(line);
# print out ok lines
for line in linesok:
print(line);
Kako pa veš kater podatek manjka
Pust' ot pobyedy k pobyedye vyedyot!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Fake traffic generatorOddelek: Omrežja in internet | 2232 (1428) | HotBurek |
» | [c#] Majhen problemčekOddelek: Programiranje | 993 (801) | darkolord |
» | C# pomoč pri razmišljanjuOddelek: Programiranje | 2292 (1436) | urozz |
» | [Java]: replace - slovar v txtOddelek: Programiranje | 1683 (1541) | Spura |
» | problem z linuxom (rabim cimprej prosim)Oddelek: Operacijski sistemi | 1441 (1257) | Isotropic |