Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Erste Schritteboolean: ist Zahl Hexadezimal - Lösung verwirrend
ich bin weiter fleißig am Lernen, die Aufgabe habe ich richtig, genau so steht sie in den Lösungen, aber ich habe ein Verständnisproblem, vielleicht kann mir jemand helfen.
Aufgabe:
Meine Lösung:
Java:
public class Hexa {
public static boolean istHexZiffer (char zeichen)
{
if ((zeichen >= '0' && zeichen <='9') ||
(zeichen >='a' && zeichen <='f') ||
(zeichen >='A' && zeichen <='F'))
return true;
else
return false;
}
}
Das mit 0 und 9 ist ja verständlich, aber woher weiß Java das der Buchstabe a <f ist bzw. g nicht mehr gültig?
mal davon abgesehen das die aufgabe schon schrott ist würde ich als lehrer trotzdem FALSCH drunterschreiben ...
ich setz mal n bisschen was an was der aufgabenersteller unbedingt verbessern sollte
1) -1 wird in der regel als fehlercode zurückgegeben ... ergo müsste die methode bei allem anderen was nicht [a-zA-Z] ist -1 returnen ... es gibt zwar ein paar ausnahmen wie compareTo() die halt bestimmt ob etwas kleiner gleich oder größer ist dafür sinnigerweise -1 als "validen" return hat ... aber hier ist das absolut fehlplatziert ... dadurch eignet man sich nur schlechte gewohnheiten an die später in teamarbeit wo es gang und gebe ist -1 als ERROR zu returnen zu großen problemen führen können
2) wenn man die methode schon mit "ist" beginnt ... im englischen "is" wird normalerweise ein BOOL returned ... der halt angibt ob etwas zutrifft oder nicht ...
sinnvoller weise hätte man hier zwei methoden schachteln können : "istGrossbuchstabe()" und "istKleinbuchstabe()" ... ein "istGrossKleinBuchstabe()" ist völliger blödsinn ... und mit int als return einfach falsch
3) der hinweis das "ß" nicht übergeben wird ist ja mal voll an die wand gefahren ... "ß" ist laut duden grundsätzlich nur ein reiner kleinbuchstabe ... da gibt es keine große variante ... ergo : fester return ... if(c=='ß') return -1; ...
4) ich weis zwar nicht in welcher welt der autor dieser aufgabe lebt ... aber die deutschen umlaute mal eben der einfachheit unter den tisch fallen zu lassen ist schon grob fahrlässig ... denn anstatt euch beizubringen mit solchen "sonderfällen" klarzukommen wird es schlicht ignoriert ...
5) korrekte klammerung , blockbildung , einrückung
klar kann man if/else/for/while einfach so als einzeiler schreiben ... aber man sollte trotzdem klammern ...
und wenn man es schon als zweizeiler schreibt ... dann auch bitte korrekt einrücken ... ist zwar dem compiler egal .. erleichtert aber das lesen des codes ...
für fehlende klammern gäbs von mir ein falsch ... für die inkorrekte einrückung punkt-abzug ...
mal ganz davon abgesehen ist dein if-if-else logisch falsch ... denn das else bezieht sich nur auf das zweite if ... klar wird dies grundsätzlich geprüft wenn das erste false ist ... aber rein logisch falsch
korrekter weise so
Java:
if()
{
}
else
{
if()
{
}
else
{
}
}
6) ich weis zwar nicht ob ihr schon so weit seid ... aber wie wär es einfach mit ner exception ?
das hier wäre meine idee
Java:
public boolean isLowerLetter(char c)
{
if(c>='a'&&c<='z')
{
return true;
}
if(c>='A'&&c<='Z')
{
return false;
}
throw new IllegalArgumentException("ONLY [a-zA-Z]");
}
und bevor jetzt hier wieder irgendwer anfängt mit heulen das ich es nicht auf den lehrer und/oder den schüler schieben soll ... aber bei solchen aufgaben und solchen lösungen die so auch noch im lösungsbuch stehen ... dann kann man sich nur an den kopf fassen und sich fragen : WHAT THE ...
ähm ... klammern / blöcke ... sauber einrücken ... conventions ?
mal davon abgesehen das die aufgabe schon schrott ist würde ich als lehrer trotzdem FALSCH drunterschreiben ...
ich setz mal n bisschen was an was der aufgabenersteller unbedingt verbessern sollte
.......
Darf ich mal fragen, wieso Du Dir hier anmaßt, hier ständig alles und jeden zu kritisieren ???:L :noe:
Von Deinem Standpunkt aus mag die Aufgabe vielleicht Schrott sein, aber ich denke nicht, dass Du es wirklich beurteilen kannst.
Das kann doch durchaus im Rahmen eines Unterrichts Sinn machen ... sind halt Grundlagen !
Wie wäre es denn übrigens, wenn Du Dich hier mal offiziell anmeldest?
Oder fehlt Dir dazu der Mut?
@tröööt
So jetzt mal ehrlich: Ich mich noch nie so heftig ge-facepalm't wie gerade eben nachdem ich deinen "Beitrag" gelesen habe.
Alles was du schreibst ist hier total nebensächlich. Es geht hier um eine Schulaufgabe die mit Sicherheit zu einer Zeit gestellt wurde in der noch die Grundlagen und Mechanics von Java vermitelt werden.
In diesem Fall die Bedeutung von char. Das es auch nur ein primitiver Datentyp ist wie int und byte und man ihn auch genauso vergleichen (<=>) kann.
Durch die erste Aufgabe wird gezeigt, dass man so Bereiche in der ASCII Tabelle definieren kann und wie man eine entsprechende Rückgabe produziert.
Durch die zweite Aufgabe wird das nochmal gefestigt (selbe Vorgehensweise) aber es gibt eine andere Definition für Rückgabewerte.
Genau weil oben genanntes Vermittelt werden soll werden auch solche Exoten wie ß und andere Sonderlinge aus der Aufgabenstellung genommen! Wenn dir das nicht logisch erscheint kann ich dir auch nicht helfen.
Auch:
Bei solchen Aufgaben spielt die Definition "-1 ist als Fehlercode zurückzugeben" sowas von keine Rolle! Genauso deine ständigen Bemerkungen á la: "Einzeiler sind schlechter Stil". Das ist DEINE Meinung. Nur weil es dir gefällt alles in {} zu setzten müssen das noch lange nicht alle tun. Und es ist definitiv KEIN KONVENTIONSBRUCH! Wenn ich dann noch höre (lese) "Gibt bei mir Punkabzug/Wäre bei mir ein FALSCH" krieg' ich das kalte!
@VFL Freak
Ich schätze letzeres. Dann könnte er ja gesperrt werden...