[Java] läsa rader från textfilen och sen lägga det till LinkedHashMap (gjorde rätt men förstår inte...)
Hej
Först jag vill att säga ursäkta med språket. Jag är invandrare och det blir mycket konstigt med grammatik ...
Jag har ett uppgift som säger att skapa en enkel algoritm för lotteri program.
Programmet ska läsa vinster från text filen först
1 Resa för två till Azorerna
3 Weekend för två i Köpenhamn
5 Tusenkronor
Siffran som ligger framför texter betyder antal av detta typer vinster. Finns 5 Tusenkronor , 3 Weekend för två i Köpenhamn och 1 Resa för två till Azorerna.
Enligt uppgiften, måste man använda Map och lotnummerna ska plockas fram slumpmässigt.
Den är min kod som använder dessa regler
public static void main (String[]args) throws FileNotFoundException{
Map<Integer,String> tab = new LinkedHashMap<Integer,String>();
String lot , minstaNumString, störstaNumString;
int minstaNum, störstaNum, antalLotteri = 0, antalVinsterTotalt = 0;
while(true){
lot = JOptionPane.showInputDialog("Vilek fil ska man läsa?");
minstaNumString = JOptionPane.showInputDialog("Vad är minsta nummer i lotteri?");
minstaNum = Integer.parseInt(minstaNumString);
störstaNumString = JOptionPane.showInputDialog("Vad är största nummer i lotteri?");
störstaNum = Integer.parseInt(störstaNumString);
if(lot.equals("LottningVinst.txt")&&(störstaNum>minstaNum)&&(minstaNum>=0)){
break;
}
}
antalLotteri = störstaNum-minstaNum+1;
FileReader filr = new FileReader(lot);
Scanner sc = new Scanner(filr);
while(sc.hasNext()){
int antalVinster = sc.nextInt();
antalVinsterTotalt += antalVinster;
if (antalVinsterTotalt > antalLotteri) {
JOptionPane.showMessageDialog(null, "Fler vinster än antal lotter");
}
else{
String vinst = sc.nextLine();
while (antalVinster>0) {
int vinstNr = (int)(Math.random()*(störstaNum-minstaNum+1)) + minstaNum;
if (!tab.containsKey(vinstNr)) {
tab.put(vinstNr, vinst);
antalVinster--;
}
}
}
}
for(Map.Entry<Integer,String> m: tab.entrySet() )
System.out.println(m);
}
Eftersom vinstNr är random, java ska visa olika output varje gång , och jag fick den output just nu.
1= Resa för två till Azorerna
6= Weekend för två i Köpenhamn
10= Weekend för två i Köpenhamn
7= Weekend för två i Köpenhamn
8= Tusenkronor
3= Tusenkronor
2= Tusenkronor
4= Tusenkronor
5= Tusenkronor
Den är rätt svar. Men jag förstår inte riktigt hur" java förstod att där ska vara 3 Weekend för två i Köpenhamn och 5 Tusenkronor och printar ut med exakt lika antal? "