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.
if (c <= 122 && c >= 97) {
a = c;
a = Character.toUpperCase(a);
if (65 <= c && c <= 90) {
a = c;
}
a = Character.toLowerCase(a);
} else {
c = 95;
}
Gruß,
André
PS: ich weiß allerdings nicht, ob ich die Klammern so gesetzt habe, wie dein Algorithmus es verlangt, da Du ja zwei if hast und nicht offensichtlich ist, auf welches sich das else bezieht.
vielen Dank für deine Antwort. Der Error ist jetzt weg 🙂
das Ergebnis stimmt leider noch nicht so ganz, er macht zwar Kleinbuchstaben groß, aber das andere macht er nicht. Bin leider noch Anfänger in Java.
Ich poste mal das Beispiel damit du dich auskennst:
Das Programm soll 2 Zeichen einlesen und diese Ersetzungen durchführen:
Wenn eine Kleinbuchstabe eingelesen wurde soll er durch einen Großbuchstaben ersetzt werden.
Wenn eine Großbuchstabe eingelesen wurde soll er durch einen Kleinbuchstaben ersetzt werden.
Alle anderen Zeichen sollen durch einen Unterstrich ersetzt werden (_).
Beide Zeichen sollen ohne weiteren Text ausgegeben werden.
Beispiel:
Eine Eingabe von 'a' und '8' soll zu folgender Ausgabe führen:
André Uhres hat es in eine bessere Richtung korrigiert, aber schon angemerkt dass es so noch nicht korrekt sein kann,
wenn if (c <= 122 && c >= 97) { erfüllt ist, welchen Sinn hat es, darin noch if (65 <= c && c <= 90) { zu prüfen?
das kann doch gar nicht der Fall sein
die Aufgabe dazu zu posten ist bisschen wenig, wobei du ja schon viel Code hast,
aber überlege jetzt doch nochmal selber wie er wohl besser anzuordnen ist
if (c <= 122 && c >= 97) {
a = c;
a = Character.toUpperCase(a);
if (65 <= c && c <= 90) {
a = c;
}
a = Character.toLowerCase(a);
} else {
c = 95;
}
Gruß,
André
PS: ich weiß allerdings nicht, ob ich die Klammern so gesetzt habe, wie dein Algorithmus es verlangt, da Du ja zwei if hast und nicht offensichtlich ist, auf welches sich das else bezieht.
if (c <= 122 && c >= 97) {
a = c;
a = Character.toUpperCase(a);
}
if (c >= 65 && c <= 90) {
a = c;
a = Character.toLowerCase(a);
} else {
c = 95;
}
Wenn c zwischen 65 & 90 ist macht er die Buchstaben klein, wenn c zwischen 97 & 122 ist, dann macht er die Buchstaben groß, wenn beides nicht der Fall ist, dann macht er c zu 95.
hab die code jetz nochmal kopiert um für das 2. Zeichen das eingegeben wird die Konvertierung durchzuführen, nur leider gibt es jetzt wieder Probleme. Wenn ich zB für c: j eingebe und für d: K
bekomme ich raus:
Ausgabe: J
Ausgabe: j
Ausgabe: k
Versteh nicht warum er mir das zweite j ausgibt.
Java:
System.out.println("Bitte ein Zeichen eingeben: ");
c = SavitchIn.readLineNonwhiteChar();
System.out.println("Bitte noch ein Zeichen eingeben: ");
d = SavitchIn.readLineNonwhiteChar();
if (c <= 122 && c >= 97) {
c = Character.toUpperCase(c);
System.out.println("Ausgabe: "+ c);
}
if (65 <= c && c <= 90) {
c = Character.toLowerCase(c);
System.out.println("Ausgabe: "+ c);
}
else {
c = 95;
System.out.println("Ausgabe: " +c);
}
if (d <= 122 && d >= 97) {
d = Character.toUpperCase(d);
System.out.println("Ausgabe: "+ d);
}
if (65 <= d && d <= 90) {
d = Character.toLowerCase(d);
System.out.println("Ausgabe: "+ d);
}
else {
d = 95;
System.out.println("Ausgabe: " +d);
}
hab die code jetz nochmal kopiert um für das 2. Zeichen das eingegeben wird die Konvertierung durchzuführen, nur leider gibt es jetzt wieder Probleme. Wenn ich zB für c: j eingebe und für d: K
bekomme ich raus:
Ausgabe: J
Ausgabe: j
Ausgabe: k
Versteh nicht warum er mir das zweite j ausgibt.
Java:
System.out.println("Bitte ein Zeichen eingeben: ");
c = SavitchIn.readLineNonwhiteChar();
System.out.println("Bitte noch ein Zeichen eingeben: ");
d = SavitchIn.readLineNonwhiteChar();
if (c <= 122 && c >= 97) {
c = Character.toUpperCase(c);
System.out.println("Ausgabe: "+ c);
}
if (65 <= c && c <= 90) {
c = Character.toLowerCase(c);
System.out.println("Ausgabe: "+ c);
}
else {
c = 95;
System.out.println("Ausgabe: " +c);
}
if (d <= 122 && d >= 97) {
d = Character.toUpperCase(d);
System.out.println("Ausgabe: "+ d);
}
if (65 <= d && d <= 90) {
d = Character.toLowerCase(d);
System.out.println("Ausgabe: "+ d);
}
else {
d = 95;
System.out.println("Ausgabe: " +d);
}
Weil da insgesamt noch 2 else Fehlen, quelltext kommt mit dem editieren.
EDIT:
Java:
System.out.println("Bitte ein Zeichen eingeben: ");
c = SavitchIn.readLineNonwhiteChar();
System.out.println("Bitte noch ein Zeichen eingeben: ");
d = SavitchIn.readLineNonwhiteChar();
if (c <= 122 && c >= 97) {
c = Character.toUpperCase(c);
System.out.println("Ausgabe: "+ c);
} else{
if (65 <= c && c <= 90) {
c = Character.toLowerCase(c);
System.out.println("Ausgabe: "+ c);
}
else {
c = 95;
System.out.println("Ausgabe: " +c);
}
}
if (d <= 122 && d >= 97) {
d = Character.toUpperCase(d);
System.out.println("Ausgabe: "+ d);
}
else{
if (65 <= d && d <= 90) {
d = Character.toLowerCase(d);
System.out.println("Ausgabe: "+ d);
}
else {
d = 95;
System.out.println("Ausgabe: " +d);
}
}
Hab nun noch eine Frage. Ich muss nämlich die Zeichen in einer Zeile einlesen und nicht auf 2 aufteilen so wie ichs gemacht hab. Bekomme bei der Online Abgabe leider diese Fehlermeldung.
Also meine Frage ist jetzt wie kann das Programm erkennen wenn ich zB eingebe F$ welches das erste und welches das zweite Zeichen ist damit ich die jeweils der Variable c und d zuordnen kann?
Dieses "Programm" lässt dich eine Eingabe in der Konsole machen (oder du änderst löscht die 1. Zeile und änderst die 3. ab), switcht die Buchstaben in der Größe und gibt einen Unterstrich für jedes andere Zeichen.
Java:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String strAusgabe = "";
String eingabe = in.readLine(); //Hiermit machst du deine Eingabe in das Console-Fenster.
for(int i = 0; i < eingabe.length();i++) {
if ( eingabe.charAt(i) <= 122 && eingabe.charAt(i) >= 97) {
strAusgabe = strAusgabe + Character.toUpperCase(eingabe.charAt(i));
} else {
if (65 <= eingabe.charAt(i) && eingabe.charAt(i) <= 90) {
strAusgabe = strAusgabe + Character.toLowerCase(eingabe.charAt(i));
} else {
strAusgabe = strAusgabe + "_";
}
}
}
System.out.println(strAusgabe);
Sobald du die geschweiften Klammern weglässt "{" und "}" nach einem if bzw. else Statement, so bezieht sich dieses auch nur auf die nächst folgende Zeile. Da muss man sehr aufpassen, sowas fällt hinterher nämlich nicht mehr auf und keine IDE kann dir so einen logischen Fehler später anzeigen... 😀