Wiederkehrende Probleme und Lösungsansätze
Die gleichen kleinen Probleme oder „Teilprobleme“ treten in Programmen immer wieder auf: „Eingaben vom Benutzer lesen“, „Die Summe von Werten berechnen“ und so weiter.
Lassen Sie uns einige dieser Teilprobleme und Muster zu ihrer Lösung betrachten.
Benutzereingaben lesen
Das Lösungsmuster für Programmieraufgaben, die das Lesen von Benutzereingaben erfordern, ist unkompliziert. Wenn das Programm Benutzereingaben lesen muss, wird ein Scanner-Hilfswerkzeug für diese Aufgabe erstellt. Der Scanner wird in der Hauptmethode nach der Zeile public static void main(String[] args) {
erstellt. Um den Scanner zu verwenden, muss er durch die Anweisung import java.util.Scanner;
im Programm verfügbar gemacht werden, die vor der Klassendeklaration (public class ...
) steht. Das Importieren des Scanner-Werkzeugs macht es im Programm verfügbar.
// Making the scanner available in the program
import java.util.Scanner;
public class Program {
public static void main(String[] main) {
// Creating the scanner
Scanner reader = new Scanner(System.in);
// Examples of reading different types of user input
String text = reader.nextLine();
int number = Integer.valueOf(reader.nextLine());
double numberWithDecimals = Double.valueOf(reader.nextLine());
boolean trueOrFalse = Boolean.valueOf(reader.nextLine());
}
}
Loading...
Berechnungen
Häufig müssen in einem Programm Berechnungen durchgeführt werden, wie das Berechnen eines Durchschnitts oder einer Summe. Das Lösungsmuster für solche Probleme sieht wie folgt aus:
- Definieren Sie die für die Berechnung erforderlichen Eingaben und deklarieren Sie Variablen dafür. Eingaben beziehen sich auf die Werte, die in die Berechnung einfließen. Den Typ der Eingaben kann man normalerweise aus der Problemstellung ableiten.
- Identifizieren Sie die erforderliche Operation und deklarieren Sie eine Variable für das Ergebnis der Berechnung. Führen Sie die Berechnung mit den Eingaben durch und weisen Sie das Ergebnis der dafür vorgesehenen Variablen zu. Auch den Typ des Ergebnisses kann man in der Regel aus der Problemstellung ableiten.
- Nach Abschluss der Berechnung tun Sie etwas mit dem Ergebnis. Dies kann das Ausgeben des Ergebnisses sein oder zum Beispiel dessen Verwendung bei der Berechnung eines Durchschnitts, indem die Summe der Eingaben durch ihre Anzahl geteilt wird.
Zum Beispiel sieht das Lösungsmuster für das Problem Erstellen Sie ein Programm, das die Summe von zwei ganzen Zahlen berechnet folgendermaßen aus:
// Identifying the input values and declaring the variables for them
int first = 1;
int second = 2;
// Identifying the operation and declaring a variable for the result
int sum = first + second;
// printing the result of the calculation
System.out.println("The sum of " + first + " and " + second + " is " + sum);
Ein Programm, das sowohl Eingaben liest als auch Berechnungen durchführt, kombiniert beide Muster. Ein Programm, das das Produkt von zwei vom Benutzer bereitgestellten ganzen Zahlen berechnet, sieht so aus:
// Making the scanner available in the program
import java.util.Scanner;
public class Program {
public static void main(String[] main) {
// Creating the scanner
Scanner reader = new Scanner(System.in);
// Identifying the input values and declaring the variables for them
int first = 1;
int second = 2;
// Assigning the user input to the variables
first = Integer.valueOf(reader.nextLine());
second = Integer.valueOf(reader.nextLine());
// Identifying the operation and declaring a variable for the result
int product = first * second;
// Printing the result of the operation
System.out.println("The product of " + first + " and " + second + " is " + product);
}
}
Im obigen Beispiel wurde das Programm so implementiert, dass die Variablen zuerst deklariert und dann Werte in sie eingelesen werden. Die Deklaration der Variablen und das Einlesen der Werte in sie können auch kombiniert werden.
// Making the Scanner available to the program
import java.util.Scanner;
public class Program {
public static void main(String[] main) {
// Creating the Scanner
Scanner reader = new Scanner(System.in);
// Declaring the variables and assigning user input to them
int first = Integer.valueOf(reader.nextLine());
int second = Integer.valueOf(reader.nextLine());
// Identifying the operation and declaring a variable for the result
int product = first * second;
// Printing the result of the operation
System.out.println("The product of " + first + " and " + second + " is " + product);
}
}
Bedingte Logik
Oft enthalten Probleme eine bedingte Logik. In solchen Fällen verwenden wir bedingte Anweisungen. Eine bedingte Anweisung beginnt mit einem if
-Befehl, gefolgt von einem Ausdruck in Klammern. Der Ausdruck wird entweder als wahr oder falsch ausgewertet. Wenn er als wahr ausgewertet wird, wird der folgende Block, der durch geschweifte Klammern abgegrenzt ist, ausgeführt.
// if the value is greater than five
if (value > 5) {
// then...
}
Ein Programm, das "ok" ausgibt, wenn der Wert der Variablen größer als 42
ist, und andernfalls "nicht ok" ausgibt, sieht so aus:
int value = 15;
if (value > 42) {
System.out.println("ok");
} else {
System.out.println("not ok");
}
Sie können auch mehrere Bedingungen miteinander verknüpfen. In einem solchen Fall nimmt das Problem die Form an „wenn a, dann b; sonst wenn c, dann d; sonst wenn e, dann f; andernfalls g“. Die Kette besteht aus einer if
-Anweisung, gefolgt von else if
-Anweisungen, die jeweils ihren eigenen Ausdruck und Block enthalten.
// if the value is greater than five
if (value > 5) {
// functionality when value is greater than five
} else if (value < 0) {
// functionality when value is less than zero
// and the value IS NOT larger than five
} else {
// functionality otherwise
}
Loading...
Bedingte Logik kann mit anderen zur Problemlösung verwendeten Mustern kombiniert werden. Betrachten wir das Problem: „Lesen Sie zwei ganze Zahlen vom Benutzer ein. Wenn die Summe der Zahlen über 100 liegt, drucken Sie too much
. Wenn die Summe kleiner als 0 ist, drucken Sie too little
. Andernfalls drucken Sie ok
“. Das folgende Programm kombiniert die Funktionalität des Einlesens, Berechnens und der bedingten Logik:
// Bringing Scanner to the program's use
import java.util.Scanner;
public class Program {
public static void main(String[] main) {
// Creating the scanner
Scanner reader = new Scanner(System.in);
// Declaring the variables and assigning user input to them
int first = Integer.valueOf(reader.nextLine());
int second = Integer.valueOf(reader.nextLine());
// Identifying the operation and declaring variable for the result
int sum = first + second;
// Doing something with the result. In this case
// the result is used in the conditional operations.
if (sum > 100) { // if the sum is over 100
System.out.println("too much");
} else if (sum < 0) { // if the sum is less than 0
System.out.println("too little");
} else { // otherwise
System.out.println("ok");
}
}
}