NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Avatar
BLADE
Člen
Avatar
BLADE:27.3.2016 14:57

Zdravím,
potreboval by som pomoc pri prasovaní. Spravil som náhodné čísla ktoré generujú iba čísla ktoré ešte neboli generované teda žiadne sa neopakuje. Problém je že som to spravil v Set<Integer> a ten potrebujem dostať na int teda na pole int-ov.
Ide o to že mám slovo v ktorom chcem odhaliť niektoré písmená. Potrebujem teda čísla pozícií znakov ktoré odhalím.

int pocetOdhalenych = 2;
Random random = new Random();
Set<Integer> odhalene = new LinkedHashSet<Integer>();
while(odhalene.size() < pocetOdhalenych){
    Integer dalsi = random.nextInt(spravneSlovo.length());
    odhalene.add(dalsi);
}

Takto to všetko funguje napr keď si dám pri výpise odhalene.toString() len to potrebujem dať na ten int :D

 
Odpovědět
27.3.2016 14:57
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na BLADE
Atrament:27.3.2016 16:57

Nejsem si jistý jestli jsem tě pochopil úplně správně, ale pokud ti jde o to ty čísla mít v kolekci, kterou můžeš procházet pomocí indexů, tak ten Set prostě převeď na List:

List<Integer> listOdhalenych = new ArrayList<>();
listOdhalenych.addAll(odhalene);

Pokud je účelem vypsat to 'spravneSlovo' tak, že neodhalené písmena jsou nahrazena například pomlčkou (jako u oběšence), tak to ale nepotřebuješ ne? Stačí vypisovat to spravneSlovo znak po znaku a vždycky se akorát kouknout do setu, jestli tam někde je právě zpracovávaný index, nějak takto:

String result="";
for (int i = 0; i < spravneSlovo.length(); i++) {
  if (odhalene.contains(i)) {
    result += spravneSlovo.charAt(i); //tento index je v odhalených, takže do result přidáme písmeno
  }
  else {
    result += "-"; //tento index není v odhalených, takže přidáme pomlčku
  }
}
 
Nahoru Odpovědět
27.3.2016 16:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.