Probleme mit Java Aufgabe

Hallo!

Ich hab ein Problem, denn ich muss bald eine UE abgeben, aber ich weiß nicht wie ich da vorgehen soll. Für eure Hilfe wär ich sehr dankbar!

Also meine Aufgabe: Einlesen und Überprüfung eines Ascii Bildes.

Ich muss eine Klasse AsciiReader und eine Klasse AsciiTools machen.

Die Klasse AsciiTools besitzt eine statische Methode (public static boolean checkZeile(String zeile)), welche einzelne Strings (die Zeilen eines Ascii Bildes) auf Korrektheit überprüft d.h. prüft ob nur die zugelassenen Zeichen darin vorkommen.
Die Zeile ist korrekt, wenn die Länge (50 Zeichen) stimmt und nur die vorgegebenen Zeichen enthalten sind und genau 44 Zeilen eingegeben wurden.
Erlaubt sind folgende 17 Zeichen: "#WMBRXVYIti+=;:,."

Die Klasse AsciiReader beinhaltet die main-Methode, welche das Bild einliest und die Prüfungen ausführt.

Ich hab ein bisschen angefangen und hab versucht die AsciiTools Klasse zu machen... aber ich hab keine Ahnung wie ich da prüfe, wie viel Zeichen ich in einer Zeile habe und vor allem, wie man überprüfen kann, dass es genau 44 Zeilen gibt.

Code:
public class AsciiTools {    
	
	public static boolean checkZeile(String zeile)
	int zeilennr;
	
	
	if (zeile.equals ("[\\#\\W\\M\\B\\R\\X\\V\\Y\\I\\t\\i\\+\\=\\;\\:\\,\\.]"))
	{
		boolean fehler = false;
	}
	else
	{ 	
		boolean fehler = true;
	}
	
	
}

Ich weiß, für euch wird diese Aufgabe sicher leicht sein, aber ... :p

Vielen Dank schon im Voraus!

MFG
 
Gut, erstmal würde ich den String als String Array einlesen... mit ner for schleife durchlaufen und auf die einzelnen Symbole überprüfen(mit OR ||) ...
2. dann die zeile.length abfragen...
die anzahl der zeilen wirst du ja nicht in der checkZeile überprüfen, oder?
mach nen zeilen counter... ist wohl am einfachsten...

weiss nicht obs weiter hilft... aber ich weiss leider nicht was schon vorgegeben wurde und was nicht...

gruss

mad
 
ok vielen danke für die schnelle antwort ... aber gehts nicht einfacher, als mit einem array (haben wir noch nicht ausführlich gelernt)? ... und wie definiere ich in java eine Zeile bzw. wie geht ein zeilencounter?

ajo wie meinst du vorgegeben? also eine schon programmierte datei wurde nicht mitgeliefert
 
Naja, ein String IST eigentlich ein Array, ich arbeite halt nur gerne so ^^

AbfrageBeispiel if (deinString.length()==50)
{
...

und for (int i =0; i<zeile.length;i++) {
if (zeile.charAt(i)== ('#'||'W'|| usw...

so ähnlich würd ich die Abfrage machen...



Der counter bezog sich darauf wie du das Bild einliest... du könntest sonst in der Einlese methode evtl. nen Counter mitlaufen lassen der für jeden /n einhochzählt oder so... (also normales int i =0 und i++)

kann mir halt nicht so richtig vorstellen wie ihr das machen sollt...
 
*schnief* irgendwie bring ich das nicht her ... Bei mir ist irgendwie das Problem, dass ich nicht weiß, wie ich den boolean-wert, der die methode checkZeile liefert einsetzen soll im AsciiReader.java (enthält die main Methode)

AbfrageBeispiel if (deinString.length()==50)

length ist eine Methode in AsciiTools.java?

mfg
 
length() ist eine methode , die auf Strings angewendet werden kann...

look here: Java Doc

in der Methode zeilenCheck returnst du den boolean wert...

in der AsciiReader führst du einfach die Methode in AsciiTools aus...

ich lege dir allerdings ans herz, diese fragen mit schul/studi kollegen durchzugehen, das ist viel effektiver, insbesondere weil das hier zum grundlegenden verständnis gehört... wird noch wichtig sein..
 
wieso methode?
length ist doch eigentlich ein (public) Attribut der Klasse String, d.h. du müsstest mit 'deinString.length' darauf zugreifen. Eine Methode namens length() ist mir nicht bekannt, da musst du mal auf der sun site nachschauen. Ich würde aber dennoch das Attribut benutzen, da es ressourcensparender ist, auf ein attribut zuzugreifen, als eine Methode aufzurufen.
 
Original von Heinzelotto
wieso methode?
length ist doch eigentlich ein (public) Attribut der Klasse String, d.h. du müsstest mit 'deinString.length' darauf zugreifen.

Seit wann hat denn java.lang.String ein Attribut length? Ich kenne das nur von arrays.
Code:
symbol  : variable length
location: class java.lang.String
          System.out.println(asd.length);
1 error
BUILD FAILED (total time: 0 seconds)

Eine Methode namens length() ist mir nicht bekannt, da musst du mal auf der sun site nachschauen.

Mir aber, und afaik auch die einzige Möglichkeit. (Ok, man könnte es auch in ein chararray umwandeln und dann mit .length operieren - aber der sinn ist nicht vorhanden :D)
 
Original von Heinzelotto
wieso methode?
length ist doch eigentlich ein (public) Attribut der Klasse String, d.h. du müsstest mit 'deinString.length' darauf zugreifen. Eine Methode namens length() ist mir nicht bekannt, da musst du mal auf der sun site nachschauen. Ich würde aber dennoch das Attribut benutzen, da es ressourcensparender ist, auf ein attribut zuzugreifen, als eine Methode aufzurufen.


auf http://java.sun.com/j2se/1.5.0/docs/api/

findest du unter STRING die METHOD SUMMARY:
und da drin eine Methode length()

siehe hier: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#length()
 
also das mit regex funktioniert ... defenierbar ist das so: es wird der wert true zurückgeliefert, falls eines, keines, oder mehrere der Symbole #,W,M ... auftreten, oder?

bei folgendem code:
Code:
return zeile.matches("[#WMBRXVYIti+=;:,.]*");

ich möchte aber auch gern die andere variante (die newbiemäßige) machen können :) und hab jetzt folgenden code:

Code:
 public static boolean checkZeile(String zeile)
	{

		if (zeile.length() == 50){
			
		for(int i = 0; i < zeile.length();i++) {
			if (zeile.charAt(i) == ('#'||'W' ||'M' ||'B' ||'R' ||'X' ||'V' ||'Y' ||'I' ||'t' ||'i'||'+'||'='||';'||':'||','||'.')) {
		}
		return true;
		return false;
		}
leider gibt es bei mir eine fehlermeldung bzw. der ausschnitt "'#'||'W'" wird von eclipse als fehler angezeigt.... weiß nid wieso
ajo und sonst mit den returns etc stimmt das?
 
public static boolean checkZeile(String zeile)
{

if (zeile.length() == 50){

for(int i = 0; i < zeile.length();i++) {
if (zeile.charAt(i) == ('#'||'W' ||'M' ||'B' ||'R' ||'X' ||'V' ||'Y' ||'I' ||'t' ||'i'||'+'||'='||';'||':'||','||'.')) {
return true;
}
else {
return false; }
}

}



so müsste die Klammerung richtig sein... sollte eigentlich auch so klappen... wenn ich nix übersehen habe...
 
hmm geht nid bei mir :( es kommt immer die fehlermeldung

Severity and Description Path Resource Location Creation Time Id
The operator || is undefined for the argument type(s) char, char asciitools AsciiTools.java line 19 1165613600265 429

im eclipse
 
Zurück
Oben