Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (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 von DevilKiller
Geschrieben

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

Geschrieben

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?

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...