Forum » Programiranje » [JAVA] help
[JAVA] help
gansta ::
Sem še začetnik v javi in imam naslednji problem, nekje vmes v programu imam naslednjo kodo:
se pravi vsak znak jemlje "posebaj"....jaz pa bi rad da mi recimo jemlje številke kot celota, recimo 0.6, potem 6, potem 7, za obdelavo naprej...
lp, hvala
String test = "danes"; //read each character and record the frequencies for (char c : test.toCharArray()) charFreqs[c]++;
se pravi vsak znak jemlje "posebaj"....jaz pa bi rad da mi recimo jemlje številke kot celota, recimo 0.6, potem 6, potem 7, za obdelavo naprej...
double[] test = new double[] {0.6 6 7}; //kako sedaj napišem to enako for zanko da mi bere iz double, kot posamezne cifre
lp, hvala
- spremenil: gansta ()
mm1992 ::
//izpiše vsa števila iz tabele double[] test = {0.6,6,7}; for(double d:test){ System.out.print(d); }
Loči elemente v tabeli z vejico
Zgodovina sprememb…
- spremenil: mm1992 ()
gansta ::
//izpiše vsa števila iz tabele
double[] test = {0.6,6,7};
for(double d:test){
System.out.print(d);
}
Loči elemente v tabeli z vejico
Hmm, to vem vendar jaz rabim še "toCharArray(), da mi da v array; ne rabim izpisa
To mi seveda da error:
for(double c: test.toDoubleArray()) // System.out.print(c); charFreqs[c]++; //charFreq je pa samo konstanta..."meja" int[] charFreqs = new int[2560];
Zgodovina sprememb…
- spremenil: gansta ()
mm1992 ::
Aha..., potem pa bi bilo to najenostavnejše rešit z navadno for zanko ali pa da si umisliš nek counter.
mm1992 ::
int[] charFreqs = new int[2560]; //1. možnost int i =0; for(double c: test.toDoubleArray()){ charFreqs[i++]++; } //2.možnost double[] tabela = test.toDoubleArray(); for(int i=0;i<tabela.length;i++){ charFreqs[i]++; }
Upam da bo kaj pomagalo
Zgodovina sprememb…
- spremenil: mm1992 ()
mkos2 ::
Pozdravljeni!
imam neko nalogo za nardit pa jo nikakor ne morem "Poštekati".
Robot se v skladu z uporabnikovimi ukazi giblje po pravokotni površini velikosti m × n polj:
Na začetku se robot nahaja v zgornjem levem kotu površine. Nato se v vsakem koraku premakne za določeno število polj v smeri levo, desno, navzgor ali navzdol. Smer premika je določena z ukazom. Začetna dolžina premika je enaka 1, vendar pa jo je možno kadarkoli nastaviti z ukazom.
Robot pozna sledeče ukaze:
o L: Premik v levo.
o R: Premik v desno.
o U: Premik navzgor.
o D: Premik navzdol.
o Števka med 1 in 9: Nastavitev trenutne dolžine premika (med 1 in 9). Robot se bo v vseh sledečih korakih premaknil za to dolžino, vse dokler je ne nastavimo ponovno.
Napišite program, ki prebere števili m in n (velikost površine) in zaporedje ukazov v obliki strnjenega niza, nato pa simulira premikanje robota po površini v skladu z ukazi. Nazadnje naj program za vsako polje izpiše, kolikokrat ga je robot obiskal. Primer (uporabnikov vnos je podčrtan):
Stevilo vrstic (m): 5
Stevilo stolpcev (n): 6
Zaporedje ukazov: RD3RD2UUL4DUD1L
1 1 2 1 1 0
0 1 4 1 2 0
0 0 3 0 2 0
0 0 3 0 2 0
0 1 2 0 1 0
Slika na desni strani seveda ni del izpisa, ampak je namenjena le za lažje razumevanje delovanja programa. Robotovi premiki so oštevilčeni z zaporednimi številkami. Robot se na začetku nahaja v zgornjem levem kotu, dolžina premika pa je enaka 1. V prvem koraku se robot premakne za eno polje v desno (ukaz R), v drugem pa za eno polje navzdol (ukaz D). Nato nastavimo dolžino premika na 3 (ukaz 3). V naslednjih dveh korakih se robot zato premakne za tri mesta v desno in navzdol (RD). Nato nastavimo dolžino premika na 2 in se za to dolžino dvakrat premaknemo navzgor in enkrat levo (UUL). In tako naprej. . .
Če je kakšen ukaz v zaporedju neveljaven (različen od znakov L, R, D, U in od števk), naj program izpiše ustrezno obvestilo in se takoj zaključi. Če kakšnega ukaza ni mogoče izpolniti, ker bi se robot moral premakniti čez rob površine, prav tako izpišite ustrezno obvestilo in zaključite program. Na primer:
Stevilo vrstic (m): 5
Stevilo stolpcev (n): 6
Zaporedje ukazov: 3RD4LD
Ukazov ni mogoce izpolniti, saj bi se robot moral popeljati cez rob povrsine.
V tem primeru težave povzroči predzadnji ukaz, torej L.
imam neko nalogo za nardit pa jo nikakor ne morem "Poštekati".
Robot se v skladu z uporabnikovimi ukazi giblje po pravokotni površini velikosti m × n polj:
Na začetku se robot nahaja v zgornjem levem kotu površine. Nato se v vsakem koraku premakne za določeno število polj v smeri levo, desno, navzgor ali navzdol. Smer premika je določena z ukazom. Začetna dolžina premika je enaka 1, vendar pa jo je možno kadarkoli nastaviti z ukazom.
Robot pozna sledeče ukaze:
o L: Premik v levo.
o R: Premik v desno.
o U: Premik navzgor.
o D: Premik navzdol.
o Števka med 1 in 9: Nastavitev trenutne dolžine premika (med 1 in 9). Robot se bo v vseh sledečih korakih premaknil za to dolžino, vse dokler je ne nastavimo ponovno.
Napišite program, ki prebere števili m in n (velikost površine) in zaporedje ukazov v obliki strnjenega niza, nato pa simulira premikanje robota po površini v skladu z ukazi. Nazadnje naj program za vsako polje izpiše, kolikokrat ga je robot obiskal. Primer (uporabnikov vnos je podčrtan):
Stevilo vrstic (m): 5
Stevilo stolpcev (n): 6
Zaporedje ukazov: RD3RD2UUL4DUD1L
1 1 2 1 1 0
0 1 4 1 2 0
0 0 3 0 2 0
0 0 3 0 2 0
0 1 2 0 1 0
Slika na desni strani seveda ni del izpisa, ampak je namenjena le za lažje razumevanje delovanja programa. Robotovi premiki so oštevilčeni z zaporednimi številkami. Robot se na začetku nahaja v zgornjem levem kotu, dolžina premika pa je enaka 1. V prvem koraku se robot premakne za eno polje v desno (ukaz R), v drugem pa za eno polje navzdol (ukaz D). Nato nastavimo dolžino premika na 3 (ukaz 3). V naslednjih dveh korakih se robot zato premakne za tri mesta v desno in navzdol (RD). Nato nastavimo dolžino premika na 2 in se za to dolžino dvakrat premaknemo navzgor in enkrat levo (UUL). In tako naprej. . .
Če je kakšen ukaz v zaporedju neveljaven (različen od znakov L, R, D, U in od števk), naj program izpiše ustrezno obvestilo in se takoj zaključi. Če kakšnega ukaza ni mogoče izpolniti, ker bi se robot moral premakniti čez rob površine, prav tako izpišite ustrezno obvestilo in zaključite program. Na primer:
Stevilo vrstic (m): 5
Stevilo stolpcev (n): 6
Zaporedje ukazov: 3RD4LD
Ukazov ni mogoce izpolniti, saj bi se robot moral popeljati cez rob povrsine.
V tem primeru težave povzroči predzadnji ukaz, torej L.
import java.*; import java.util.*; public class Seminar { public static void main(String[] args){ Scanner vnos=new Scanner (System.in); System.out.println("Št vrstic: "); int vrstica=vnos.nextInt(); System.out.println("Št stolpcev: "); int stolpec=vnos.nextInt(); System.out.println("Vnos smeri: "); String smer=vnos.next(); int[][]tab=new int[vrstica][stolpec]; for(int vr=9;vr<tab.length;vr++){ for(int st=9;st<tab[vr].length;st++){ String D="D",L= "L",U = "U",R="R"; if(smer==D){ tab[st]=new int [st+1]; }else if(smer==L){ tab[vr]=new int [vr-1]; }else if(smer==U){ tab[st]=new int [st-1]; }else if(smer==R){ tab[vr]=new int [vr+1]; } System.out.println("Vrstic: "+tab.length); System.out.println("Stolpec: "+tab[vr].length); System.out.println("Stolpec2: "+tab[st].length); } } } }
keworkian ::
Tole probaj, če ti bo delal fino.
int x = 0; int y = 0; int iterator = 1; int[][] tab = new int[vrstica][stolpec]; tab[x][y] += 1; for (int i = 0; i < ukaz.length; i++) { if (ukaz[i].IsDigit()) { iterator = Integer.parseInt(ukaz[i]) + 1; continue; } switch (ukaz[i]) { case 'R': y += 1; break; case 'L': y -= 1; break; case 'U': x -= 1; break; case 'D': x += 1; break; default: break; } if ((x >= 0 && y >= 0) && (x < vrstice && y < stolpci)) { tab[x][y] += iterator; } else { System.out.print("I cannot move there!"); Syste.exit(0); } iterator = 1;
Zgodovina sprememb…
- spremenil: keworkian ()
mkos2 ::
8.vrstica -The method IsDigit() is undefined for the type String
tabela ukaz je pol 'R','D','U','L'
String[]ukaz={"D","U","L","R"};
14.vrstica mi tole nabija: Cannot switch on a value of type String. Only convertible int values or enum constants are permitted
tabela ukaz je pol 'R','D','U','L'
String[]ukaz={"D","U","L","R"};
14.vrstica mi tole nabija: Cannot switch on a value of type String. Only convertible int values or enum constants are permitted
Zgodovina sprememb…
- spremenil: mkos2 ()
IceBoX ::
Očitno imaš v switch String. Switch lahko prejme le int ali char. Pa jaz bi tole raje naredil tako, da bi prebral tiste ukaze kot string, šel v for zanko (int i)ki bi šla od 0 do konca stringa (smer.length) in bi gledal z charAt(i)=='R' ali 'L'... Če se s katero ujema, naj pač naredi kot imaš zgoraj napisano.
keworkian ::
8.vrstica -The method IsDigit() is undefined for the type String
Castaj v char ane?
tabela ukaz je pol 'R','D','U','L'
String[]ukaz={"D","U","L","R"};
Ne ukaz je input, ki ga dobiš notri (po moji logiki) ampak tega nisem pisal, ker sem želel vzpodbuditi tvoje programerske sposobnosti.
14.vrstica mi tole nabija: Cannot switch on a value of type String. Only convertible int values or enum constants are permitted
Daj no poguglaj malo, vsaj malo!
Zgodovina sprememb…
- spremenil: keworkian ()
mkos2 ::
Googlam neprestano, razmisljam kako bi vse to skp dal. Neki moram narest...do ju3 do 11h.
Zgodovina sprememb…
- spremenil: mkos2 ()
keworkian ::
Saj imaš 3/4 že narejeno, kar ti manjka je da dodas input za vrstice,stolpec(če sploh rabiš to) in ukaz(RLD). Malo spremeniš mojo kodo in bo, ni tako težko.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Prevajanje in šumniki v ubuntuOddelek: Programiranje | 2483 (2100) | mmaestro |
⊘ | Pomoč pri Domači nalogiOddelek: Programiranje | 4531 (3379) | Gandalfar |
» | [Java] Zamenjat char v stringu na dolocenmu indeksu?Oddelek: Programiranje | 897 (859) | TipyTop |
» | osnove v Javi - zvezdiceOddelek: Programiranje | 3528 (2750) | Tutankhamun |
» | [JAVA]Branje podatkov tipa int, doubleOddelek: Programiranje | 3400 (3298) | BaRtMaN |