Grundlagen der Java-Programmierung Practice-Switch-Anweisung
Ist es einfach, das Programm zu schreiben, das ich als Neuling in meinem zweiten Jahr gemacht habe, oder habe ich es vergessen?
Ich dachte, also habe ich es geschafft.
Fazit
- Sie können etwas machen, das vorerst funktioniert (obwohl es fast Eclipse zu verdanken ist)
- Ich frage mich, was ich mich als Neuling nicht gefragt habe
Problem
- Name der Quelldatei "Check22.java"
- 2 Geben Sie die Zahl (Ganzzahl) und die Berechnungsmethode (1 Zeichen) ein.
- Führt die angegebene Operation aus und gibt das Berechnungsergebnis aus
- Verwenden Sie die switch-Anweisung, um den Prozess gemäß der Berechnungsmethode zu verzweigen.
- Weitere Einzelheiten entnehmen Sie bitte den folgenden Ausführungsergebnissen.
Bitte geben Sie die erste Nummer ein>
10
Bitte geben Sie die zweite Nummer ein>
3
Bitte wählen Sie eine Berechnungsmethode>
(a)Hinzufügen
(b)Subtrahieren
(c)Multiplizieren
(b)Teilung
d
Die Antwort ist 3
Implementierung
Ich habe es wie folgt gemacht.
Check22.java
package practice;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Check22 {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line = null;
int num1 = 0;
int num2 = 0;
try {
System.out.println("Bitte geben Sie die erste Nummer ein");
line = reader.readLine();
num1 = Integer.parseInt(line);
System.out.println("Bitte geben Sie die zweite Nummer ein");
line = reader.readLine();
num2 = Integer.parseInt(line);
System.out.println("Bitte wählen Sie eine Berechnungsmethode");
System.out.println("(a)Hinzufügen");
System.out.println("(b)Subtrahieren");
System.out.println("(c)Multiplizieren");
System.out.println("(d)Teilung");
line = reader.readLine();
if (!( line.equals("a")) && !( line.equals("b") )&& !( line.equals("c") )&& !( line.equals("d"))) {
System.out.println("a,b,c,Bitte geben Sie eines von d ein");
}else {
String symbol = line;
int answer = calc(num1,num2,symbol);
System.out.println("Die Antwort ist" + answer + "ist.");
}
}catch(NumberFormatException e) {
System.out.println("Bitte gebe eine Nummer ein");
}catch (IOException e) {
e.printStackTrace();
}
}
public static int calc(int num1, int num2, String symbol) {
int result;
switch(symbol) {
case "a":
result = num1 + num2;
break;
case "b":
result = num1 - num2;
break;
case "c":
result = num1 * num2;
break;
default:
result = num1 / num2;
break;
}
return result;
}
}
Frage
- Wenn Sie keine break in die switch-Anweisung der calc-Methode schreiben, wird die gesamte Verarbeitung ausgeführt.
- Zuerst habe ich keine Pause geschrieben, und selbst wenn ich eine eingegeben habe, wurden alle Fälle bearbeitet und das Ergebnis war nicht wie erwartet. Als ich den Fall "a" eingab :, dachte ich, dass nur Teil a verarbeitet werden würde, aber ich wusste, dass die Verarbeitung nicht vor der Pause enden würde; (Letztes Jahr habe ich Pause geschrieben; vorerst denke ich, ich habe es mit der Absicht geschrieben, Pause hinzuzufügen;)
- Wenn Sie der calc-Methode keine statische Methode hinzufügen, tritt ein Fehler auf (Fehlerinhalt: Die nicht statische Methode calc (int, int, string) vom Typ Check22 kann nicht statisch referenziert werden.)
- Da es sich um eine Methode in derselben Klasse handelt, können Sie darauf verweisen, ohne statische Aufladung hinzuzufügen! Ich dachte. Der Fehlerinhalt ist der gleiche, aber ich habe herausgefunden, dass statische Methoden nicht statische Methoden nicht direkt verwenden können. Da statische Methoden an Orten verwaltet werden, die nicht mit Instanzen zusammenhängen, können Sie selbst dann nicht feststellen, wo sich diese Instanzmethode befindet, wenn Sie versuchen, von nicht statischen Methoden auf sie zu verweisen. Daher tritt ein Kompilierungsfehler auf. Ja. Ich habe das Gefühl, dass ich es irgendwie verstehe.
(Die Hauptmethode ist jedoch eine statische Methode. Wenn Sie also von dort aus auf eine Methode verweisen möchten, müssen Sie meiner Meinung nach allen Methoden statische Methoden hinzufügen, aber die Frage, was zu tun ist, ist ungelöst.)
Impressionen
- Vielleicht habe ich im ersten Jahr nicht an die Ausnahmebehandlung gedacht
- Ich kann nicht gut über Variablennamen und Methodennamen nachdenken