webForumDet fria alternativet

Frågespel J2ME!

1 svar · 421 visningar · startad av Wabor

WaborMedlem sedan aug. 200711 inlägg
#1

Hej!
Jag håller på och gör ett frågespel i J2ME och har fått ett fel som jag inte alls vet vad det beror på. Det är så att man skriver in sitt användarnamn och trycker på ok, då läser min MIDlet in en fråga från en server. Denna fråga är en enda lång sträng T.ex. 1;Vad heter min syster?;Kajsa;Maja;Britta;3;

Denna sträng har jag sen splittat vid varje ; tecken och sen läser jag in själva frågan på ett ställe och svarsalternativen på ett annat ställe och lägger in det i min MIDlet. Det fungerar bortsett från att varje svarsalternativ skrivs ut 7 gånger, så jag får Kajsa, Maja, Britta, Kajsa, Maja, Britta osv (sammanlagt 21 rader) istället för att få Kajsa, Maja, Britta (under varandra på 3 rader).

Först har jag kod som läser in allt från servern.

//Nedanstående kod är koden som det är något konstigt med
String respons = new String(data, 0, length);
System.out.println(respons); //Skickar ut all text

         faltrespons = splitString(respons, ';'); //Splittar strängen vid tecknet ;
            for(int i=0; i\<faltrespons.length; i++) //Går igenom hela texten
            {
             String fraga = faltrespons\[1\]; //Frågan tas
             Fraga.setText(fraga); //Frågan läggs in i MIDleten
             
             //Skriver ut varje svar 7 gånger, så nedanstående rader blir sammanlagt 21 rader
             String svar1 = faltrespons\[2\];
             choiceGroup.append(svar1, null);
              String svar2 = faltrespons\[3\];
             choiceGroup.append(svar2, null);
              String svar3 = faltrespons\[4\];
             choiceGroup.append(svar3, null);

            }

} catch (IOException ioe) {
ioe.printStackTrace();

    } finally {
        try {
            if (in != null) in.close();
            if (hc != null) hc.close();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
    
    
}

Här kommer splitmetoden.

Tacksam för hjälp
Mvh, Wabor

LimeMedlem sedan sep. 2001837 inlägg
#2

Ja? Det är klart att den gör, eftersom du kör koden lika många gånger som du har ;-tecken.

Jag skulle bygga strängen enligt mönstret:
<frågenummer>;<fråga>;<antal svarsalternativ>;[<svarsalternativ>]+(<antal svarsalternativ>);<rätt svar>

Alltså:

1;Vad heter min syster?;3;Kajsa;Maja;Britta;3;

Sedan skulle jag parsa ut den såhär:

	String response = "1;Vad heter min syster?;3;Kajsa;Maja;Britta;3";
	System.out.println(response); 

	String[] responseArray = response.split(";"); //Split at the ;-char.
	String questionNo = responseArray[0]; // Always at the first position.
	String fraga = responseArray[1]; //Question always at second position.
	String s_noOfAnswers = responseArray[2]; // Number of answers always at posistion 3.
	int noOfAnswers = Integer.parseInt(s_noOfAnswers);
	
	StringBuffer choices = new StringBuffer();
	
	for(int i=0; i<noOfAnswers; i++) //Steps through the answers. 
	{
	choices.append(i+1 + ": ");
	choices.append(responseArray[3+i]);
	choices.append("\n");
	}

	String rightAnswer = responseArray[3+noOfAnswers];
	
	System.out.println("Question " + questionNo);
	System.out.println("------------------------------------");
	System.out.println(fraga);
	System.out.println(choices.toString());
	System.out.println("Right answer is " + rightAnswer);

Fast mest troligt är det nog att jag skulle använda någon form av XML-sträng istället. Säkrare så.

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb