Forum / Grundlagen des Programmierens / 1. Hausübung
1. Hausübung
Ok, ich habe eine relativ einfache Frage zur Aufgabe 1.3. Man soll dort mit Hilfe von Schleifen ein rechteckmuster erzugen. Mein Programm hat aber einen kleinen Fehler.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Geben Sie bitte ein Zeichen ein:");
String str = sc.nextLine();
System.out.println("Geben Sie die Anzahl der Spalten ein:");
int i = sc.nextInt();
System.out.println("Geben Sie die Anzahl der Zeilen ein:");
int n = sc.nextInt();
while (i > 0) {
while (n > 0) {System.out.print(str); System.out.println(str);
i--;n--;
}
\n~~~
Das ist mein aktueller Programmcode den ich verwende. Habe das Programm folgendermasen gerunt:
Geben Sie bitte ein Zeichen ein:
x
Geben Sie die Anzahl der Spalten ein:
5
Geben Sie die Anzahl der Zeilen ein:
7
xx
xx
xx
xx
xx
xx
xx
wo liegt hier mein Fehler im Code? so kompliziert is das gar neda ber mir fällt keine lösung grad ein bin für jede HIlfe dankbar
Habs mir auch durchgschaut und find eig Aufgabe 2 passt so, man soll die if/else Verknüpfung doch nur beim zurückspringen bzw Abfragen ob man das Programm neu starten will oder nicht verwenden, und das geschieht ja auch der Angabe entsprechend. Denk nicht das das ein Problem sein sollt..
Finde die Angabe von Bsp 2 auch sehr verwirrend. Erstens steht "Eingaben mittels Console via Dialog abfragen". Wenn man jetzt nach Dialog sucht im Internet, findet man irgendwelche grafischen Eingabedialoge !? Ist aber nicht notwendig bei dem Beispiel. Und eine Menüstruktur hab ich mit if/else auch nicht gemacht (warum sollte man das auch mit if/else schleifen machen !? ). If/Else ist bei mir auch nur das Prüfen ob man erneut berechnen möchte. Die BMI Methode steht auch in der main, steht auch nichts dass man die irgendwo anders schreiben soll.
zu aufgabe 1.2: ich habe da vergessen die zwei anderen schleifen rein zu kopieren zu aufgabe 1.5: von den zwei kreuzprodukten ist keines überflüssig, da eines für char 'x' und das andere für char 'X' bestimmt ist. obwohl die abfrage case sensitiv ist, ist es so programmiert, dass groß-/kleinschreibung egal ist
Bräuchte mal Hilfe beim 1.3 Ich bekomme immer eine Zeile zuviel :confused:
public class Aufgabe31_1028797_1 {
public static void main ( String[] args ) {
Scanner sc = new Scanner(System.in);
System.out.print("Bitte Zeichen eingeben: ");
String zeichen = sc.nextLine();
System.out.print("Spaltenanzahl: ");
int s = sc.nextInt();
System.out.print("Zeilenanzahl: ");
int z = sc.nextInt();
for( int n = 0; n <= s ; n++) {
for( int i = 1; i < z ; i++) {
System.out.print(""+zeichen);
}
System.out.println(""+zeichen);
}
System.out.println("");
} \n~~~
~~~\nBitte Zeichen eingeben: X
Spaltenanzahl: 5
Zeilenanzahl: 5
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX\n~~~
Hat jemand eine Idee ?
hab aus n=0, n=1 gemacht, ging auch.
Stimmt, den Dreher hab ich garnicht bemerkt, war mit der blöden Zeile beschäftigt. Jetzt läufts. Danke.
Ja weil ich zum testen immer quadratische formen genommen hab, weil es schneller zum eingeben ist :D
Hier mal meine Aufgaben 1.1 bis 1.4 Sind zwar sicher nicht ideal geschrieben, aber sie funktionieren und sind recht simpel aufgebaut :wink:
Kommentare hab ich noch nicht überall hinzugefügt.
public class Aufgabe1_1028797_1 {
public static void main ( String[] args ) {
System.out.println("1....Deutsch"); //Auswahlmenü
System.out.println("2....Englisch");
System.out.println("3....Spanisch");
Scanner sc = new Scanner(System.in); //einlesen der Tastatureingabe
System.out.print("Bitte wählen Sie eine Sprache aus: ");
int i = sc.nextInt(); //zuweisen der Eingabe in eine Variable
if ( i == 1 || i == 2 || i == 3 ) { // Prüfen der Gültigkeit der Eingabe
switch( i ) { //Mehrfachanweisung
case 1:
System.out.println("Hallo Welt!");
break;
case 2:
System.out.println("Hello World!");
break;
case 3:
System.out.println("Hola Mundo!");
break;
}
}
else { //Ausgabe falls Prüfung fehlgeschlagen
System.out.println("Keine gültige Auswahl getroffen !");
}
}
}\n~~~
~~~\n
/**
*
* @author Wolfgang Maierhofer e1028797
*/
import java.util.Scanner; //import für scanner
public class Aufgabe2_1028797_1 {
public static float bmi (float groesse, float gewicht) { //Method für BMI Berechnung
float bmi = gewicht/ (groesse*groesse);
return bmi; //Rückgabewert der Berechnung
}
public static void main ( String[] args ) { //Main-Method
//
int i; //Deklaration, Laufvariable
Scanner sc = new Scanner(System.in);
System.out.println("#### Willkommen beim BMI-Rechner ####"); //Welcomemessage
System.out.println("-------------------------------------\n");
do {
System.out.print("Bitte geben Sie ihre Größe in Meter an: ");
float groesse = sc.nextFloat(); //zuweisen der Eingabe in eine Variable
//
System.out.print("Bitte geben Sie ihre Gewicht in kg an: ");
float gewicht = sc.nextFloat(); //zuweisen der Eingabe in eine Variable
/*Aufrufen der BMI Methode inkl. Übergabe Variablen zur Berechnung.
Anschließend Ausgabe des BMI*/
System.out.println("\nIhr BMI Beträgt: " + bmi(groesse,gewicht));
//Menüabfrage für Neuberechnung
System.out.println("\n#### Auswahlmenü ####");
System.out.println("1...BMI erneut Berechnen");
System.out.println("2...Programm beenden\n");
System.out.print("Bitte Wählen: ");
i = sc.nextInt();
//Prüfen der Menüauswahl
if ( i == 1)
i = 1; //wenn Neuberechnung
else i = 2; //wenn Abbruch
}
while (i == 1) // Schleife, solange BMI Neu berechnet werden soll
System.out.println("\nAuf Wiedersehen");
}
}
\n~~~
~~~\n/*
*
* @author Wolfgang Maierhofer e1028797
*/
//Programm 1 for-schleife
import java.util.Scanner;
public class Aufgabe31_1028797_1 {
public static void main ( String[] args ) {
Scanner sc = new Scanner(System.in);
System.out.print("Bitte Zeichen eingeben: ");
String zeichen = sc.nextLine();
System.out.print("Spaltenanzahl: ");
int s = sc.nextInt();
System.out.print("Zeilenanzahl: ");
int z = sc.nextInt();
for( int i = 1; i <= z ; i++) {
for( int n = 1; n < s ; n++) {
System.out.print(zeichen);
}
System.out.println(zeichen);
}
System.out.println("");
}
\n~~~
~~~\n/*
*
* @author Wolfgang Maierhofer
*/
//Programm 2 do-while-schleife
import java.util.Scanner;
public class Aufgabe32_1028797_1 {
public static void main ( String[] args ) {
Scanner sc = new Scanner(System.in);
System.out.print("Bitte Zeichen eingeben: ");
String zeichen = sc.nextLine();
System.out.print("Spaltenanzahl: ");
int s = sc.nextInt();
System.out.print("Zeilenanzahl: ");
int z = sc.nextInt();
int i=0, n=0;
do {
n=1;
do {
System.out.print(zeichen);
n++;
} while (n < s);
System.out.println(zeichen);
i++;
} while ( i < z );
}
}
\n~~~
~~~\n/*
*
* @author Wolfgang Maierhofer
*/
//Programm 3 while-schleife
import java.util.Scanner;
public class Aufgabe33_1028797_1 {
public static void main ( String[] args ) {
Scanner sc = new Scanner(System.in);
System.out.print("Bitte Zeichen eingeben: ");
String zeichen = sc.nextLine();
System.out.print("Spaltenanzahl: ");
int s = sc.nextInt();
System.out.print("Zeilenanzahl: ");
int z = sc.nextInt();
int i=0, n=1;
while ( i < z) {
n=1;
while ( n < s) {
System.out.print(zeichen);
n++;
}
System.out.println(zeichen);
i++;
}
}
}
\n~~~
~~~\n/*
* @author Wolfgang Maierhofer e1028797
*/
import java.util.Scanner;
public class Aufgabe4_1028797_1 {
public static void main ( String[] args ) {
Scanner sc = new Scanner(System.in);
int[] v1; v1=new int[3];
int[] v2; v2=new int[3];
System.out.print("Bitte geben Sie die X-Koordinate des ersten Vektors an: ");
v1[0] = sc.nextInt();
System.out.print("Bitte geben Sie die Y-Koordinate des ersten Vektors an: ");
v1[1] = sc.nextInt();
System.out.print("Bitte geben Sie die Z-Koordinate des ersten Vektors an: ");
v1[2] = sc.nextInt();
System.out.print("Bitte geben Sie die X-Koordinate des zweiten Vektors an: ");
v2[0] = sc.nextInt();
System.out.print("Bitte geben Sie die Y-Koordinate des zweiten Vektors an: ");
v2[1] = sc.nextInt();
System.out.print("Bitte geben Sie die Z-Koordinate des zweiten Vektors an: ");
v2[2] = sc.nextInt();
System.out.println();
System.out.println("1....Vektoraddition ");
System.out.println("2....Vektorsubtraktion ");
System.out.println("3....Kreuzprodukt ");
System.out.println();
System.out.println("9....Abbrechen ");
System.out.println();
System.out.print("Geben sie die Berechnungsart an: ");
int a = sc.nextInt();
System.out.println();
switch( a ) { //Mehrfachanweisung
case 1:
int[] add_erg; add_erg=new int[3];
System.out.println("Ergebnis der Vektoraddition: ");
add_erg[0] = v1[0]+v2[0];
add_erg[1] = v1[1]+v2[1];
add_erg[2] = v1[2]+v2[2];
System.out.println("X-Koordinate: " + add_erg[0]);
System.out.println("Y-Koordinate: " + add_erg[1]);
System.out.println("Z-Koordinate: " + add_erg[2]);
break;
case 2:
int[] sub_erg; sub_erg=new int[3];
System.out.println("Ergebnis der Vektorsubtraktion: ");
sub_erg[0] = v1[0]-v2[0];
sub_erg[1] = v1[1]-v2[1];
sub_erg[2] = v1[2]-v2[2];
System.out.println("X-Koordinate: " + sub_erg[0]);
System.out.println("Y-Koordinate: " + sub_erg[1]);
System.out.println("Z-Koordinate: " + sub_erg[2]);
break;
case 3:
int[] kreuz_erg; kreuz_erg=new int[3];
System.out.println("Ergebnis Kreuzprodukt: ");
kreuz_erg[0] = (v1[1]*v2[2])-(v2[1]*v1[2]);
kreuz_erg[1] = (v1[2]*v2[0])-(v1[0]*v2[2]);
kreuz_erg[2] = (v1[0]*v2[1])-(v1[1]*v2[0]);
System.out.println("X-Koordinate: " + kreuz_erg[0]);
System.out.println("Y-Koordinate: " + kreuz_erg[1]);
System.out.println("Z-Koordinate: " + kreuz_erg[2]);
break;
case 9:
System.out.println("-----kkthxbye----");
default;
}
System.out.println("");
}
\n~~~
~~~\nimport java.util.Scanner; //import util für scanner
public class Aufgabe5_1028797_1 {
//Abschnitt Berechnungen mittels Methoden
public static double qquerschnitt (float a, float l) {
double fmoment = (a*a*a*a)/12;
return fmoment;
}
public static double kquerschnitt (float a, float l) {
double fmoment = ((a*a*a*a)*3.14)/4;
return fmoment;
}
public static double iquerschnitt (float a, float l) {
double fmoment = (10*(a*a*a*a))/144;
return fmoment;
}
public static double beidseitig (double f, float n, float l) {
double biegung = (n*(l*l*l))/(48*210000*f);
return biegung;
}
public static double krag (double f, float n, float l) {
double biegung = (n*(l*l*l))/(3*210000*f);
return biegung;
}
//Main Methode
public static void main ( String[] args ) {
Scanner sc = new Scanner(System.in);
boolean wiederholen = true;
do {
//Abschnitt Wertabfragen
System.out.println("Querschnittsform auswählen ");
System.out.println("q....Quadratische Form");
System.out.println("k....Kreisform");
System.out.println("i....I-Träger");
System.out.println();
System.out.print("Auswahl: ");
char m = sc.next().charAt(0);
System.out.println("----------------------");
System.out.print("Geben Sie die Abmessung in mm an: ");
float a = sc.nextInt();
System.out.print("Geben Sie die Länge in mm an: ");
float l = sc.nextInt();
System.out.print("Geben Sie die Kraft in N an: ");
float x = sc.nextInt();
System.out.println();
float n = x*1000; //Umrechnung Nm in Nmm
double f=0;
switch( m ) { //Berechnungen der F-Momente
case 'q': //Quadratquerschnittsflächenträgheitsmomenberechnung
System.out.println("Flächenträgheitsmoment:" +qquerschnitt(a,l)+" mm^4"); //Methodenaufruf inkl. Parameterübergabe + Ausgabe
f = qquerschnitt(a,l); //Zuweisung der Methodenrückgabe an die Variable f
break;
case 'k'://Kreisquerschnittsflächenträgheitsmomenberechnung
System.out.println("Flächenträgheitsmoment:" +kquerschnitt(a,l)+" mm^4"); //Methodenaufruf inkl. Parameterübergabe + Ausgabe
f = kquerschnitt(a,l); //Zuweisung der Methodenrückgabe an die Variable f
break;
case 'i': //I-Trägerquerschnittsflächenträgheitsmomenberechnung
System.out.println("Flächenträgheitsmoment:" +iquerschnitt(a,l)+" mm^4"); //Methodenaufruf inkl. Parameterübergabe + Ausgabe
f = iquerschnitt(a,l); //Zuweisung der Methodenrückgabe an die Variable f
break;
default:
break;
}
//Abschnitt Abfrage Auflagerform
System.out.println();
System.out.println("----------------------");
System.out.println("Auflagerform auswählen ");
System.out.println("b....Beidseitig gelagert");
System.out.println("k....Kragträger");
System.out.print("Auswahl: ");
char o = sc.next().charAt(0);
switch( o ) { //Berechnung Biegung
case 'b': //Berechnung Durchbiegung bei zwei Auflagern
System.out.println();
System.out.println("Maximale Durchbiegung: " +beidseitig(f,n,l)+" mm"); //Methodenaufruf inkl. Parameterübergabe + Ausgabe
break;
case 'k': //Berechnung Durchbiegung Kragträger
System.out.println();
System.out.println("Maximale Durchbiegung: " +krag(f,n,l)+" mm"); //Methodenaufruf inkl. Parameterübergabe + Ausgabe
break;
default:
break;
}
//Abschnitt Programmwiederholung
System.out.println();
System.out.println("Neuberechnung starten... j");
System.out.println("Abbrechen ...............n");
System.out.print("Bitte Wählen: ");
char w = sc.next().charAt(0);
if ( w == 'j')
wiederholen = true; //wenn Neuberechnung
else wiederholen = false; //wenn Abbruch
} while (wiederholen == true);
System.out.println();
}
}\n~~~
update: Bsp 1.5 hinzugefügt.
danke, aber es funktioniert und ich bin froh dass ich es so hinbekommen hab :) Warum unbedingt char nehmen in bsp 1 ? meinst für die menüauswahl? ist doch banane ob man A oder 1 drückt.
edit: das mit den array in bsp 4 hat mich jetzt doch interessiert, habs umgeändert :)
Hab mein Bsp 1.5 jetzt auch fertig und oben hinzugefügt. Vielleicht hilft es ja dem einen oder anderen.
Frage: Wie habt ihr das Projekt eigentlich aufgebaut? Einfach ein Package erstellt indem man alle einzelnen Beispiele als eigene Klassen hat und das erste Beispiel/Klasse die main Klasse ist?
Georg @FiebaAutor
Wirtschaftsingenieur... · Technische Universit...
grad drübergesehen, das ist teils ned schlecht aber teilweise ned so gut gelöst. so ist in Aufgabe 2 die while schleife vielleicht geschickter, allerdings sieht die aufgabenstellung eine if else verzweigung vor. davon abgesehen versteh ich da eh ned was du da geschrieben hast^^ In Aufgabe 3 brauchst du 3 schleifen du hastnur eine geschrieben. Aufgabe 5: du hast das kreuzprodukt zweimal drinnen ^^ das eine ist überflüssig. und das is was persönliches aber wenn wir schon mit chars programmieren können würd ich fpr die schleifenwiederholung in der 5. aufgabe auch chars wie j/n oder Y/n oder gleich strings hernehmen^^ statt zahlen.
sind nur vorschläge