DevilKiller Geschrieben 24. November 2008 Geschrieben 24. November 2008 (bearbeitet) Hallo erstmal, ich komme einfach nicht weiter und zwar haben wir eine Aufgabe erhalten: Schreiben Sie ein Programm, welches überprüft ob in einem gegebenen nxn - Array in jeder Zeile bzw. jeder Spalte jede Zahl von 1 bis n genau einmal vorkommt; ein solches Array wird korrekt genannt. Zum Beispiel ist 1 2 3 2 3 1 3 1 2 eine korrektes Array. Ihrem Programm ArrayCheck.java wird über die Kommandozeile der Dateiname eines Feldes mitgegeben. Testen Sie ob in der Datei eine korrektes Array gespeichert ist. Beispiel: Für die Datei sod1 3 1 2 3 3 1 2 2 3 1 soll Ihr Programm mit dem Aufruf java SudokuCheck sod1 die Ausgabe Richtig. liefern. Für die Datei sod2 3 1 2 3 3 1 1 2 3 1 die Ausgabe Falsch. Das Dateiformat ist <n> <Zeile 1 mit n Werten> <Zeile 2 mit n Werten> ... <Zeile n mit n Werten> public class ArrayCheck { public static void main(String[] args) { int x; String s; String[] data; char[][] c; int i; In.open("sod1.txt"); x=In.readInt(); s=In.readLine(); data=new String[x]; c=new char[x][x]; for(i=0;i<data.length;i++) { s=In.readLine(); data[i]=s; for(int j=0;j<data.length;j++) { c[i][j]=data[i].charAt(j); Out.println(c[i][j]); } } In.close(); } } Ich weiß jetzt einfach nicht wie ich weiter vorgehen soll. Wäre super wenn ihr mir helfen würdet. Bearbeitet 24. November 2008 von DevilKiller Zitieren
kingofbrain Geschrieben 24. November 2008 Geschrieben 24. November 2008 Ok, Du hast also die Werte in ein zweidimensionales Array geladen. Das ist doch schon mal gut. Jetzt läufst Du im Array durch alle Spalten und Zeilen und prüfst, ob jede Zahl genau einmal vorkommt. Du weißt die obere Grenze (Länge der Zeilen und Spalten bzw. bei Dir x) der Werte und kannst also einfach aus einer Liste von Zahlen (musst Du noch anlegen) die entsprechend vorhandenen Werte abhaken. Bei doppelten Werten schmeißt Dein Programm einen Fehler. Alternativ zu einer Liste von Zahlen kannst Du natürlich auch eine Liste von boolean nehmen. Am Anfang sind die alle false, wenn Du eine Zahl mit dem entsprechenden Index findest, schreibst Du true rein. Jetzt erkennst Du, ob eine Zahl doppelt vorkommt. Peter Zitieren
unbenannt Geschrieben 24. November 2008 Geschrieben 24. November 2008 Was mir spontan auffällt: - Das Codefragment wird nicht funktionieren, da z.B. "In" nicht deklariert wurde. - Warum ein Char-Array, wenn Du Zahlen prüfen möchtest? - Warum folgendes: x=In.readInt(); s=In.readLine(); Warum nicht, die Zeile mittels readLine() einlesen und anschließend auf Integer casten? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.