Highscoreliste für ein Vokabeltrainer (brauche hilfe)

Hallo Aro69,

konnte leider bisher deinerseits nicht eine Zeile Code sehen :( .

Schau mal hier:

Java:
public class PropertiesHelpUser {

	//config.txt mit folgendem Inhalt:
	//session1=Hans Jochen/30/20/10
	// ...
	//session10=Klaus Müller/45/15/30

	public static void main(String[] args) {
		String[][] matrix = new String[10][4];

		PropertiesHelp ph = new PropertiesHelp("config.txt");

		// Ein Wert auslesen ausgeben
		System.out.println(ph.get("session1"));

		// Werte einzelnen auslesen, splitten in die matrix notieren
		matrix[0] = ph.get("session1").split("/");
		matrix[0] = ph.get("session2").split("/");

		// Alle Werte mit einer Schleife einlesen ...
		for (int i = 0; i < 10; i++)
			matrix[i] = ph.get("session" + (i + 1)).split("/");

		System.out.println(matrix[0][0]); // Name
		System.out.println(matrix[0][1]); // Anzahl Wörter
		System.out.println(matrix[0][2]); // Anzahl gewusste Wörter
		System.out.println(matrix[0][3]); // Anzahl nicht gewusste Wörter
		
		// Analog geht auch das Speichern
		ph.set("session1", "James Bond/20/10/10");

		// Überprüfen ob ein Wert enthalten ist
		System.out.println(ph.contain("session4"));

		// Überprüfen ob leer ist
		System.out.println(ph.empty());
	}
}


Vg Erdal
 
Hallo Flashray
Nach wochenlanger versuche habe ich es aufgegeben und mir überlegt, das Ich keine Highscoreliste Prog werde.
Ich werde eine Legende Prog. d.h.

Wie oft wurde dieser Vokabeltrainer gespielt,
Wer ist der beste
Wieviele Vokabeln hat der jenigegespielt
Wieviel Prozent hat er

Wird zwar an der Endnote etwas schlechter ausfallen aber nun!?
Ich habe schon mal einiges gemacht, jedoch habe Ich jetzt probleme mit der (.split) datei.
Ich habe eine .txt Datei mit dem Inhalt Hans/70/85.5/17 Ich bekomme beim auslesen der datei eine fehlermeldung.
Kannst du mir bitte helfen.

Code:
 {
       BufferedReader lesen;
       String bestplayer ="";
        {
         int schreib=0;
         lesen = new BufferedReader(
         new FileReader("arif.txt"));//aus der Textdatei lesen
        
        
         while (bestplayer = lesen.readLine().split("/")); // Den array auffüllen (Deutsch)
          {							                  			// in einer schleife
			  Legende[schreib] = bestplayer;					// bis die arrayfelder
			  schreib += 1;											// voll sind
			 }
        }
		 lesen.close();  //lesen schlissen
		 
		  //vokarray = ein.readLine().split(";");* 

      String wieoftgespielt = (Legende[3]);
      int wieoftgespieltneu= Integer.parseInt(wieoftgespielt);
      wieoftgespieltneu += 1;

Ich bekomme diese Fehlermeldung

C:\Dokumente und Einstellungen\Arif\Desktop\Vokabeltrainer\Vokabeltrainer\vokabeltrainer4a.java:268: incompatible types

found : java.lang.String

required: boolean

while (bestplayer = lesen.readLine().split("/")); // Den array auffüllen (Deutsch)

^

Ich bin für jede hilfe Dankbar
Tschüss
Arif
 
Hallo aro69,

wow in einer Zeile 3 Fehler .. nich schlecht :)

while (bestplayer = lesen.readLine().split("/"));

1) eine While-Schleife erwartet einen boolschen Wert in der Klammer. (true -> Mach weiter! / false -> Brich ab!)
2) du deklarierst bestplayer als simplen String obwohl die String.split() Methode ein String Array zurück gibt.
3) das Semikolon hinten verhindert, dass der Code in den geschweiften Klammern hinter der While Zeile ausgeführt wird.

Mein Rat: schau dir erstmal die Grundlagen an und lad dir die API runter.

Gruß Stefan
 
Hallo Arif,

hier mal ein Minibeispiel für einen Quiz mit Highscoreliste.

Java:
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Quiz {

	private static PrintStream o = System.out;

	private String[] word = { "K", "A", "N", "I", "N", "C", "H", "E", "N" };

	private String[] find = new String[word.length];

	private BufferedReader in;

	private int task = -1;

	private int tries = 0;

	private String input = "";

	private List<String[]> list = new ArrayList<String[]>();

	private PropertiesHelp ph = new PropertiesHelp("config.dat");

	public Quiz() {
		loadHighScoreList();
		greet();
		askForTask();
	}

	public static void main(String[] args) {
		Quiz p = new Quiz();
	}

	public void askForTask() {

		o.println("Type a number for wanted task, please!");
		o.println("After any input you have to press ENTER.");
		o.println("If you want ...");
		o.println();
		o.println("a) exit Quiz 2006 -> type 0");
		o.println("b) play Quiz 2006 -> type 1");
		o.println("c) show highscorelist -> type 2");

		o.println();

		try {
			in = new BufferedReader(new InputStreamReader(System.in));
			input = in.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}

		try {
			task = Integer.valueOf(input);
		} catch (NumberFormatException e) {
			o.println("Your input was invalid. Try it again, please!");
			o.println();
			task = 99;
		}

		switch (task) {
		case 0: {
			saveHighScoreList();
			o.println("Bye, till next game");
			System.exit(0);
		}
			break;
		case 1: {
			play();
		}
			break;
		case 2: {
			showHighScoreList();
		}
			break;
		default:
			askForTask();
		}

	}

	public void greet() {
		o.println("Hallo! Welcome to the prompt of Quiz 2006");
		o.println("Please, press ENTER to go on.");
		try {
			in = new BufferedReader(new InputStreamReader(System.in));
			input = in.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		o.println();
	}

	public void play() {
		for (int i = 0; i < word.length; i++)
			find[i] = "-";

		System.out.println("Find The Word");

		tries = 0;
		while (!Arrays.equals(word, find)) {
			printArray(find);
			System.out.println("Say a letter, please:");
			try {
				in = new BufferedReader(new InputStreamReader(System.in));
				input = in.readLine();
			} catch (IOException e) {
			}
			if (input.length() == 0)
				continue;
			for (int i = 0; i < word.length; i++) {
				if (word[i].equals("" + input.substring(0, 1).toUpperCase()))
					find[i] = input.substring(0, 1).toUpperCase();
			}
			tries++;
		}
		System.out.println("Bravo! You win!");
		printArray(find);

		enterNewPlayer();

		o.println();
		askForTask();
	}

	public void enterNewPlayer() {
		String player = "";

		o.println("Type your name, please!");

		try {
			in = new BufferedReader(new InputStreamReader(System.in));
			input = in.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		player = input;
		int point = (int) (100.0 * (1.0 / Math.pow((double) tries, 0.2)));
		if (player != null && player.length() > 0) {
			list.add(new String[] { player, "" + point });
			o.println("Your data is registered in the highscorelist.");
		}
	}

	public void showHighScoreList() {

		if (list.size() == 0)
			o.println("Highscorelist is empty!");
		else {
			Integer[] points = new Integer[list.size()];
			Integer[] order = new Integer[list.size()];
			for (int i = 0; i < list.size(); i++) {
				points[i] = Integer.parseInt(list.get(i)[1]);
			}
			for (int i = 0; i < list.size(); i++) {
				int index = Arrays.asList(points).indexOf(max(points));
				points[i] = -1;
				order[i] = index;
			}
			o.println("Quiz 2006 - Highscorelist:");
			for (int i = 0; i < list.size(); i++) {
				o.print("place: " + (i + 1) + " - " + list.get(order[i])[0]
						+ " - ");
				o.println(list.get(order[i])[1] + " points");
			}
		}

		o.println();
		askForTask();
	}

	public void loadHighScoreList() {
		File file = new File("config.dat");
		if (!file.exists()) {
			try {
				file.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		} else {
			int size = ph.getSize();
			for (int i = 0; i < size; i++) {
				list.add(ph.getProperty("player" + i).split("/"));
			}
		}
	}

	public void saveHighScoreList() {
		int size = list.size();
		for (int i = 0; i < size; i++) {
			ph.setProperty("player" + i, list.get(i)[0] + "/" + list.get(i)[1]);
		}
	}

	public void printArray(Object[] o) {
		for (int i = 0; i < o.length; i++)
			System.out.print(o[i]);
		System.out.println();
	}

	public int max(Integer[] t) {
		int maximum = t[0]; // start with the first value
		for (int i = 1; i < t.length; i++) {
			if (t[i] > maximum) {
				maximum = t[i]; // new maximum
			}
		}
		return maximum;
	}
}

Hilfsklasse:
Java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class PropertiesHelp {

	private String file = "";

	public PropertiesHelp(String qfile) {
		file = qfile;
	}

	public String getProperty(String key) {
		String out = "";
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			out = prop.getProperty(key);
		} catch (IOException e) {
		}
		return out;
	}

	public void setProperty(String key, String value) {
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			prop.setProperty(key, value);
			FileOutputStream out = new FileOutputStream(file);
			prop.store(out, null);
			out.close();
		} catch (IOException e) {
		}
	}

	public boolean containsKey(String key) {
		boolean out = false;
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			out = prop.containsKey(key);
		} catch (IOException e) {
		}
		return out;
	}

	public boolean isEmpty() {
		boolean out = false;
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			out = prop.isEmpty();
		} catch (IOException e) {
		}
		return out;
	}

	public void printOut() {
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			prop.list(System.out);
		} catch (IOException e) {
		}
	}

	public int getSize() {
		int size = 0;
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			size = prop.size();
		} catch (IOException e) {
		}
		return size;
	}
}


Vg Erdal
 
Hallo flashray
Dein beispiel ist für mich viel zu kompliziert.
Daher versuche ich es mit dem ".split" weiter. Habe jetzt versucht mit einer "for" schleife die daten auszulesen (klappt nicht). Das es mit der "while" schleife nicht funz habe ich mitbekommen. Was mache ich den hier falsch?
Code:
	static void highscore(String highscoretabelle)
		throws IOException
      {
       String[]Legende = new String[4];
       BufferedReader lesen;
       {
         lesen = new BufferedReader(
         new FileReader("arif.txt"));//aus der Textdatei lesen
      try
    {
          for (int zahl = 0; zahl < Legende.length; ++zahl)
		  {
			Legende[zahl]=lesen.readLine().split("/");
			
			System.out.println(Legende[zahl]);
		  }
          
     }
    catch ( IOException e ) 
    {
      System.out.println( "Konnte Datei nicht erstellen" );
     }

Nach dem ich es compiliere bekomme ich diese fehlermeldung

Compile C:\Dokumente und Einstellungen\Arif\Desktop\Vokabeltrainer\Vokabeltrainer\vokabeltrainer4a.java....
C:\Dokumente und Einstellungen\Arif\Desktop\Vokabeltrainer\Vokabeltrainer\vokabeltrainer4a.java:269: incompatible types

found : java.lang.String[]

required: java.lang.String

Legende[zahl]=lesen.readLine().split("/");

^
1 error
Compilierung beendet

PS: Dieses Zeichen ^ ist unter ("/")

Gruss
Arif
 
Zurück