Hier wäre meine Lösung für die Challenge: Wahrscheinlich nicht die eleganteste Lösung, aber es sollte funktionieren import java.util.Scanner; public class Main { public static void main(String[] args){ double counter = 0; //Anzahl an eingegebenen Noten double sum = 0; // Summe der Noten boolean weiter = true; Scanner scan = new Scanner(System.in); System.out.println("Welche Noten hattest du?"); System.out.println("Um den Durchschnitt zu errechnen, tippe fertig."); while(weiter) { String eingabe = scan.nextLine(); counter++; switch (eingabe) { case "Eins": sum++; break; case "Zwei": sum += 2; break; case "Drei": sum += 3; break; case "Vier": sum += 4; break; case "Fünf": sum += 5; break; case "Sechs": sum += 6; break; case "fertig": weiter = false; counter --; break; default: counter --; System.out.println("Da hast Du dich wohl vertippt"); System.out.println("Hast du die Zahlen auch groß geschrieben?"); } } double durchschnitt = sum / counter; System.out.println(" Dein Durchschnitt lautet: " + durchschnitt ); } }
Habe deine Lösung noch ein wenig verbessert: import java.util.Scanner; public class Main { public static void main(String[] args){ double counter = 0; //Anzahl an eingegebenen Noten double sum = 0; // Summe der Noten Scanner scan = new Scanner(System.in); System.out.println("Welche Noten hattest du?"); System.out.println("Um den Durchschnitt zu errechnen, tippe fertig."); loop: while(true) { String eingabe = scan.nextLine(); counter++; switch (eingabe) { case "1": sum++; break; case "2": sum += 2; break; case "3": sum += 3; break; case "4": sum += 4; break; case "5": sum += 5; break; case "6": sum += 6; break; case "fertig": counter --; break loop; default: counter --; System.out.println("Da hast Du dich wohl vertippt"); System.out.println("Hast du die Zahlen auch groß geschrieben?"); } } System.out.println(" Dein Durchschnitt lautet: " + (sum / counter)); } }
man könnte ein mapping der zahlen machen ("Eins":1 usw...) dann einfach switch... und sum + das eingegebene (des mappings) die cases für fertig und default bleiben natürlich
🎉Wenn euch die Videos gefallen, dann unterstützt mich auf Patreon : www.patreon.com/JonasKeil 📢Als Community Java lernen *(Discord)* : discord.gg/wkWe3FvdSu 🚀Lerne Java in einer *Playlist* : bit.ly/3GKMucx
Vielen dank für das tolle Feedback. Ist immer wieder toll zu sehen, dass ich euch mit meiner Arbeit helfen kann. Gern produziere ich die Videos, habe sie mir schon notiert😁🎉
3:12 Das mit den Einrückungen stimmt nicht! Die sind für den Compile und zur Laufzeit vollkommen egal, es wird alles bis zum nächsten "case" (bzw. break) ausgeführt. Für einen guten Stil sind sinnvolle Einrückungen aber dennoch hilfreich.
Ich gebe hier gerne auch meine Lösung zum besten. habe zwar casts benutzt am ende damit auch eine richtige kommazahl rauskommt aber das hätte man bestimmt auch anders lösen können. ich empfand es so als ein wenig eleganter. lg import java.util.Scanner; public class JT10_Notendurchschnitt { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int summe = 0; int counter = 0; double durchschnitt = 0; boolean weiter = true; System.out.println("gib deine Noten ein"); System.out.println("um den Durchschnitt zu brechnen tippe \"0\""); while (weiter) { int note = scanner.nextInt(); if (note
Vielen Dank für das Feedback, besonders dass du die Challenges feiert freut mich. In der Regel kommen relativ schnell Kommentare mit Lösungsvorschlägen, den Besten pinne ich dann als Lösung an. Eine mögliche Lösung stelle ich in meinen Videos nicht vor. Ich gebe aber jedem der seine Lösung hier teilt gern Feedback :)
@@JonasKeil btw die Klausur hab ich verkackt, war derbe schwer hab nix gecheckt xD In der Vorlesung : rechne 1+3 -2 In der Klausur : mache eine Induktion aus 2n^3 /4x-z! 😂
Hier mein Lösung für die Challenge: import java.util.ArrayList; import java.util.Scanner; public class Notendurchschnitt { public static void main(String[] args) { ArrayList noten = new ArrayList(); int eingabe; double durchschnitt; eingabe = 0; System.out.println("Gib Noten von 1 bis 6 ein und beende das Programm indem du /ende/ eingibst."); is: while (true) { Scanner scan = new Scanner(System.in); String input = scan.next(); switch (input) { case "1": eingabe = 1; System.out.println("Wurde hinzugefügt!"); break; case "2": eingabe = 2; System.out.println("Wurde hinzugefügt!"); break; case "3": eingabe = 3; System.out.println("Wurde hinzugefügt!"); break; case "4": eingabe = 4; System.out.println("Wurde hinzugefügt!"); break; case "5": eingabe = 5; System.out.println("Wurde hinzugefügt!"); break; case "6": eingabe = 6; System.out.println("Wurde hinzugefügt!"); break; case "ende": durchschnitt = berechne(noten); System.out.println(durchschnitt); break is; default: eingabe = 0; System.out.println("Noten nur von 1 bis 6 gültig!"); break; } if (eingabe > 0) { noten.add(eingabe); } } } private static double berechne(ArrayList i) { double d; int sum; d = 0; sum = 0; for (int j : i) { sum += j; } d = (double) sum / i.size(); return (d); } }
Hier meine Lösung zur Challenge: package projekt2; import java.util.Scanner; public class OwnSwitchCaseChallenge { public static void main(String[] args) { Scanner scan = new Scanner(System.in); double result; double sum = 0; double counter = 0; String grade = ""; System.out.println("Sie möchten ihren Notendurschnitt berechnen? "); System.out.println("Dann sind sie hier genau richtig!"); System.out.println(); whileloop: while (true) { System.out.println( "Geben sie die Noten in Kleinbuchstaben an und bestätigen sie ihre Eingabe mit der Enter Taste:"); System.out.println("Zum Beenden und Durschnitt berechnen tippen sie STOPP und bestätigen sie mit Enter!"); grade = scan.next(); switch (grade) { case "eins": System.out.println("1 wurde hinzugefügt"); sum += 1; counter++; break; case "zwei": System.out.println("2 wurde hinzugefügt"); sum += 2; counter++; break; case "drei": System.out.println("3 wurde hinzugefügt"); sum += 3; counter++; break; case "vier": System.out.println("4 wurde hinzugefügt"); sum += 4; counter++; break; case "fünf": System.out.println("5 wurde hinzugefügt"); sum += 5; counter++; break; case "sechs": System.out.println("6 wurde hinzugefügt"); sum += 6; counter++; break; case "STOPP": System.out.println("Der Notendurchschnitt wurde berechnet:"); break whileloop; default: System.out.println("Hast du dich vertippt?"); break; } } result = sum / counter; System.out.println("Der Notendurchsnitt beträgt: " + result); } }
Ich hab das Programm noch etwas Erweitert, weil ich sehen habe das Elias genau die gleiche Lösung wie ich hatte. import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double counter =0; int sum =0; boolean weiter = true; System.out.println("Bitte gebe deine Note in Textform (Eins, Zwei, Drei, Vier, Fünf oder Sechs) ein!"); System.out.println("Bitte beachte die Groß und Kleinschreibung!"); System.out.println("Wenn du alle Noten eingegeben hast, gebe Berechne ein!"); while(weiter) { String notenEingabe = scanner.nextLine(); counter++; switch (notenEingabe) { case "Eins": sum++; break; case "Zwei": sum+=2; break; case "Drei": sum+=3; break; case "Vier": sum+=4; break; case "Fünf": sum+=5; break; case "Sechs": sum+=6; break; case "Berechne": weiter = false; counter--; break; default: counter--; System.out.println("Das ist ist keine Note!!!" ); System.out.println("Bitte gebe Eins, Zwei, Drei, Vier, Fünf, Sechs oder Berechne ein!"); } } double durchschnitt = sum/counter; System.out.println("Die Summe deiner Noten beträgt: " + Math.round(sum)); System.out.println("Du hast " + Math.round(counter) + " Noten eingegeben"); System.out.println("Dein Notenschnitt beträgt: " + durchschnitt); if (durchschnitt
@@JonasKeil danke sehr, warum ist es eigendlich nicht möglich bei einem switch hinter ein case einen logischen operator zu setzten, das wäre nähmlich praktisch
@@Alarium Hey Alarium, seit Java 17 gibt es bei Switch das sogenannte „Pattern Matching“. Das sollte dein Problem lösen denke ich :) Wenn du Fragen hast schreib mir gern. www.woolha.com/tutorials/java-pattern-matching-for-switch-examples
@@JonasKeil also ich wollte es so machen, das man bei den noten entweder Drei oder drei eigeben kann, falls man sich mal verschreibt, und das ohne noch mehr cases zu schreiben, aber das sieht irgendwie nicht nach dem aus was ich suche, oder ich bin gerade einfach nur lost :D, aber danke für deine hilfe
Hier wäre meine Lösung für die Challenge: Wahrscheinlich nicht die eleganteste Lösung, aber es sollte funktionieren
import java.util.Scanner;
public class Main {
public static void main(String[] args){
double counter = 0; //Anzahl an eingegebenen Noten
double sum = 0; // Summe der Noten
boolean weiter = true;
Scanner scan = new Scanner(System.in);
System.out.println("Welche Noten hattest du?");
System.out.println("Um den Durchschnitt zu errechnen, tippe fertig.");
while(weiter) {
String eingabe = scan.nextLine();
counter++;
switch (eingabe) {
case "Eins":
sum++;
break;
case "Zwei":
sum += 2;
break;
case "Drei":
sum += 3;
break;
case "Vier":
sum += 4;
break;
case "Fünf":
sum += 5;
break;
case "Sechs":
sum += 6;
break;
case "fertig":
weiter = false;
counter --;
break;
default:
counter --;
System.out.println("Da hast Du dich wohl vertippt");
System.out.println("Hast du die Zahlen auch groß geschrieben?");
}
}
double durchschnitt = sum / counter;
System.out.println(" Dein Durchschnitt lautet: " + durchschnitt );
}
}
Die Lösung finde ich klasse! Danke fürs teilen :)) Wird gleich angepinnt😃👍🏻
Habe deine Lösung noch ein wenig verbessert:
import java.util.Scanner;
public class Main {
public static void main(String[] args){
double counter = 0; //Anzahl an eingegebenen Noten
double sum = 0; // Summe der Noten
Scanner scan = new Scanner(System.in);
System.out.println("Welche Noten hattest du?");
System.out.println("Um den Durchschnitt zu errechnen, tippe fertig.");
loop: while(true) {
String eingabe = scan.nextLine();
counter++;
switch (eingabe) {
case "1":
sum++;
break;
case "2":
sum += 2;
break;
case "3":
sum += 3;
break;
case "4":
sum += 4;
break;
case "5":
sum += 5;
break;
case "6":
sum += 6;
break;
case "fertig":
counter --;
break loop;
default:
counter --;
System.out.println("Da hast Du dich wohl vertippt");
System.out.println("Hast du die Zahlen auch groß geschrieben?");
}
}
System.out.println(" Dein Durchschnitt lautet: " + (sum / counter));
}
}
man könnte ein mapping der zahlen machen ("Eins":1 usw...) dann einfach switch... und sum + das eingegebene (des mappings) die cases für fertig und default bleiben natürlich
Obwohl der Dozent recht gut ist, muss ich sagen, dass ich über deine Videos viel mehr lerne! Vielen Dank für alles!
🎉Wenn euch die Videos gefallen, dann unterstützt mich auf Patreon : www.patreon.com/JonasKeil
📢Als Community Java lernen *(Discord)* : discord.gg/wkWe3FvdSu
🚀Lerne Java in einer *Playlist* : bit.ly/3GKMucx
Wieder ein gutes Video :)
Vielen Dank, freut mich dass es dir gefällt😁🎉
Hey, du bringst super Videos raus. Danke dafür. Kannst du auch etwas zu JUnit, Lambda Ausdrücke und die Nutzung des Debuggers machen?
Vielen dank für das tolle Feedback. Ist immer wieder toll zu sehen, dass ich euch mit meiner Arbeit helfen kann. Gern produziere ich die Videos, habe sie mir schon notiert😁🎉
3:12 Das mit den Einrückungen stimmt nicht! Die sind für den Compile und zur Laufzeit vollkommen egal, es wird alles bis zum nächsten "case" (bzw. break) ausgeführt.
Für einen guten Stil sind sinnvolle Einrückungen aber dennoch hilfreich.
Echt gut erklärt👍
Vielen Dank für das Feedback Jacob😁🙌🏻
Ich gebe hier gerne auch meine Lösung zum besten. habe zwar casts benutzt am ende damit auch eine richtige kommazahl rauskommt aber das hätte man bestimmt auch anders lösen können. ich empfand es so als ein wenig eleganter. lg
import java.util.Scanner;
public class JT10_Notendurchschnitt {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int summe = 0;
int counter = 0;
double durchschnitt = 0;
boolean weiter = true;
System.out.println("gib deine Noten ein");
System.out.println("um den Durchschnitt zu brechnen tippe \"0\"");
while (weiter) {
int note = scanner.nextInt();
if (note
Wirklich gut gelöst, neoda! :)
super erklärt! Auch die Übungsaufgabe am Ende finde ich super. Wird die dann im nächsten Video aufgelöst? :D
Vielen Dank für das Feedback, besonders dass du die Challenges feiert freut mich. In der Regel kommen relativ schnell Kommentare mit Lösungsvorschlägen, den Besten pinne ich dann als Lösung an. Eine mögliche Lösung stelle ich in meinen Videos nicht vor. Ich gebe aber jedem der seine Lösung hier teilt gern Feedback :)
@@JonasKeil danke dir, ich hab mich vorhin Mal dran gesetzt und werde sie Mal hier als Kommentar reinstellen, wenn ich daheim bin :)
@@JonasKeil btw die Klausur hab ich verkackt, war derbe schwer hab nix gecheckt xD
In der Vorlesung : rechne 1+3 -2
In der Klausur : mache eine Induktion aus 2n^3 /4x-z! 😂
@@hannesz6322 Ja sehr gern, mach das😁🙌🏻
Aber vor der Wiederholungsklausur werd ich nochmal alle deine Videos schauen 1000x besser erklärt als unser Prof.Dr.Dr.Dr.h.c :)
Hier mein Lösung für die Challenge:
import java.util.ArrayList;
import java.util.Scanner;
public class Notendurchschnitt {
public static void main(String[] args) {
ArrayList noten = new ArrayList();
int eingabe;
double durchschnitt;
eingabe = 0;
System.out.println("Gib Noten von 1 bis 6 ein und beende das Programm indem du /ende/ eingibst.");
is: while (true) {
Scanner scan = new Scanner(System.in);
String input = scan.next();
switch (input) {
case "1":
eingabe = 1;
System.out.println("Wurde hinzugefügt!");
break;
case "2":
eingabe = 2;
System.out.println("Wurde hinzugefügt!");
break;
case "3":
eingabe = 3;
System.out.println("Wurde hinzugefügt!");
break;
case "4":
eingabe = 4;
System.out.println("Wurde hinzugefügt!");
break;
case "5":
eingabe = 5;
System.out.println("Wurde hinzugefügt!");
break;
case "6":
eingabe = 6;
System.out.println("Wurde hinzugefügt!");
break;
case "ende":
durchschnitt = berechne(noten);
System.out.println(durchschnitt);
break is;
default:
eingabe = 0;
System.out.println("Noten nur von 1 bis 6 gültig!");
break;
}
if (eingabe > 0) {
noten.add(eingabe);
}
}
}
private static double berechne(ArrayList i) {
double d;
int sum;
d = 0;
sum = 0;
for (int j : i) {
sum += j;
}
d = (double) sum / i.size();
return (d);
}
}
Ich habe anstatt String ergebnis = "" ;
int ergebnis;
gemacht da ich anstatt Eins , 1 haben wollte
und dies funktioniert nicht ganz. WOran liegt das ?
Warum muss beim Befehl "int würfel = random.nextInt(bound:6) + 1; " noch am Ende + 1 rechnen? 06:15
Der Zähler beginnt ja bei 0 also wäre sonst bspw. drei als Ausgabe eine 2
Hier meine Lösung zur Challenge:
package projekt2;
import java.util.Scanner;
public class OwnSwitchCaseChallenge {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double result;
double sum = 0;
double counter = 0;
String grade = "";
System.out.println("Sie möchten ihren Notendurschnitt berechnen? ");
System.out.println("Dann sind sie hier genau richtig!");
System.out.println();
whileloop: while (true) {
System.out.println(
"Geben sie die Noten in Kleinbuchstaben an und bestätigen sie ihre Eingabe mit der Enter Taste:");
System.out.println("Zum Beenden und Durschnitt berechnen tippen sie STOPP und bestätigen sie mit Enter!");
grade = scan.next();
switch (grade) {
case "eins":
System.out.println("1 wurde hinzugefügt");
sum += 1;
counter++;
break;
case "zwei":
System.out.println("2 wurde hinzugefügt");
sum += 2;
counter++;
break;
case "drei":
System.out.println("3 wurde hinzugefügt");
sum += 3;
counter++;
break;
case "vier":
System.out.println("4 wurde hinzugefügt");
sum += 4;
counter++;
break;
case "fünf":
System.out.println("5 wurde hinzugefügt");
sum += 5;
counter++;
break;
case "sechs":
System.out.println("6 wurde hinzugefügt");
sum += 6;
counter++;
break;
case "STOPP":
System.out.println("Der Notendurchschnitt wurde berechnet:");
break whileloop;
default:
System.out.println("Hast du dich vertippt?");
break;
}
}
result = sum / counter;
System.out.println("Der Notendurchsnitt beträgt: " + result);
}
}
Ich hab das Programm noch etwas Erweitert, weil ich sehen habe das Elias genau die gleiche Lösung wie ich hatte.
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double counter =0;
int sum =0;
boolean weiter = true;
System.out.println("Bitte gebe deine Note in Textform (Eins, Zwei, Drei, Vier, Fünf oder Sechs) ein!");
System.out.println("Bitte beachte die Groß und Kleinschreibung!");
System.out.println("Wenn du alle Noten eingegeben hast, gebe Berechne ein!");
while(weiter) {
String notenEingabe = scanner.nextLine();
counter++;
switch (notenEingabe) {
case "Eins":
sum++;
break;
case "Zwei":
sum+=2;
break;
case "Drei":
sum+=3;
break;
case "Vier":
sum+=4;
break;
case "Fünf":
sum+=5;
break;
case "Sechs":
sum+=6;
break;
case "Berechne":
weiter = false;
counter--;
break;
default:
counter--;
System.out.println("Das ist ist keine Note!!!" );
System.out.println("Bitte gebe Eins, Zwei, Drei, Vier, Fünf, Sechs oder Berechne ein!");
}
}
double durchschnitt = sum/counter;
System.out.println("Die Summe deiner Noten beträgt: " + Math.round(sum));
System.out.println("Du hast " + Math.round(counter) + " Noten eingegeben");
System.out.println("Dein Notenschnitt beträgt: " + durchschnitt);
if (durchschnitt
Wow, das ist ein wirklich gutes Programm! Man merkt, dass du dir dabei richtig viele Gedanken gemacht hast, meinen größten Respekt!💪🏼
@@JonasKeil danke sehr, warum ist es eigendlich nicht möglich bei einem switch hinter ein case einen logischen operator zu setzten, das wäre nähmlich praktisch
@@Alarium Hey Alarium, seit Java 17 gibt es bei Switch das sogenannte „Pattern Matching“. Das sollte dein Problem lösen denke ich :) Wenn du Fragen hast schreib mir gern. www.woolha.com/tutorials/java-pattern-matching-for-switch-examples
@@JonasKeil also ich wollte es so machen, das man bei den noten entweder Drei oder drei eigeben kann, falls man sich mal verschreibt, und das ohne noch mehr cases zu schreiben, aber das sieht irgendwie nicht nach dem aus was ich suche, oder ich bin gerade einfach nur lost :D, aber danke für deine hilfe
Haha okay, dann musst du das if Statement einfach in den Case-Block schreiben :D