Wie kann ich eine switch () - Anweisung zu konvertieren aus einem Zahlenwert zu einem Buchstaben grade?
Dies IST KEINE Hausaufgabe, aber es ist eine Praxis, die der Lehrer gab uns zu helfen, für eine Prüfung lernen. Aber ich werde nicht drehen diese in den Lehrer. (ich hoffe, dass ist erlaubt)
Er will ein Benutzer zur Eingabe einer Klasse und haben es mit Buchstaben Grad. Wäre es einfach mit if-Anweisungen, aber ich kann nicht mit JEDEM! Ich habe die Verwendung der switch-Methode.
Hier ist meine funktionale Klasse:
public class Grade {
public double getGrade(int input)
{
double inputGrade;
switch(input)
{
case 1: inputGrade >= 90;
break;
case 2: inputGrade >= 80;
break;
case 3: inputGrade >= 70;
break;
default:
grade = 60;
}
return grade;
}
}
Hier ist meine test-Klasse:
import java.util.*;
public class TestGrade
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int input = scan.nextInt();
Grade lGrade = new Grade();
double finalGrade = lGrade.getGradeSwitch(input);
System.out.println("Your toll is $" + finalGrade);
}
}
Ich noch nicht Programmieren genug, um diese analytischen Verstand. Ich HABE versucht, es zu vollenden, habe ich einfach nicht gefunden, einen Weg, um verdeckte der Benutzer-Eingang (int) in einem Brief Note (string) ohne if-Anweisungen.
Ich weiß, das ist unvollständig, aber das ist so weit wie ich gehen konnte, ohne Fehler zu machen.
EDIT:WOW! Danke Jungs, ich hasse es zu Holen, eine einzige richtige Antwort, weil viele von Euch mir geholfen haben!!
Dies ist, was ich am Ende mit (das klappte :D)
public String getGrade(int input)
{
String letterGrade;
switch(input/10)
{
case 9: letterGrade = "A";
break;
case 8: letterGrade = "B";
break;
case 7: letterGrade = "C";
break;
case 6: letterGrade = "D";
default:
letterGrade = "F";
}
return letterGrade;
}
- Hausaufgaben ist zulässig, obwohl in der Regel es ist schön, wenn Menschen tag es als solche. Oder sogar schreiben, die Frage in einer Weise, die Ihnen zeigt, haben darüber nachzudenken, anstatt nur copy/paste die Frage aus Ihrer übung.
- Amen zu dem, was Matthew sagte. +1 für die Mühe, auch wenn ich oft Hausaufgaben Fragen weniger als akzeptabel.
- Wow. Sie haben zu lieben, willkürliche Regeln wie "Sie müssen verwenden Sie eine switch-Anweisung". Dass wirklich spiegelt die Reale Welt. Ich meine, wäre es nicht besser gewesen, wenn der Lehrer kam eigentlich mit einer Frage, die mehr geeignet, um tatsächlich mit einer switch-Anweisung. Ich meine, Sie könnte wahrscheinlich schreiben ein Lösung mit nur while-Schleifen, aber Sie würde nie.
- Auch, Phil, ist ein weiterer wichtiger Punkt des Lernens, hier ist Mathe zu lernen!!!. Die Analyse der Lösung ist ziemlich einfach, mit einem gewissen Grad von der diskreten Mathematik wissen, und diese Klasse (wie auch ein paar andere Mathe lieben), sollte an der Spitze Ihrer Klasse Liste.
- Ja, ich denke mathematisch hatte ich es noch richtig ursprünglich, aber es wurde ein wenig screwy mit allen updates und änderungen
- Muss ich dis-Stimmen. es ist eine gute "nicht-triviale" übung für lernen zu wechseln. Es ist nicht 100% einfach, es hat >1-Lösung, und es fördert das, was der OP als "analytischen Verstand" statt cookie-cutter-copy/paste-Programmierung
- Ich erzielte 100% und habe eine F 🙁
- haha vielen Dank Jack 😀 Hinzugefügt, Fall 10 = A. ich bin KEIN Programmierer!!
- Lektion #N aus: Lesen Sie ALLE Ihre Daten 🙂 Verschachtelt in der Mitte von meinem Kleingedruckte in der Antwort war: "abgesehen von 100" Formulierung 🙂 im Ernst, wenn Sie lernen, zahlen sehr sorgfältig (OCD-Ebene), die Aufmerksamkeit auf details, werden Sie eine Größenordnung besser-Entwickler langfristig. Die Hälfte der Arbeit besteht darin, jede knifflige detail.
- Nicht der compiler optimieren den
switch
inif-else
Aussagen überhaupt? - Tatsächlich, es wird wahrscheinlich optimieren Sie die
switch
in eine jump-Tabelle. Aber das ist völlig nebensächlich - es ist eine übung, wie jemand beibringen zu lösen, eine leicht nicht-orthodoxe problem UND zu wechseln. - Ist es nur mir so, oder funktioniert der code oben muss ein
break
nachletterGrade = "D";
Linie? - Es braucht eine
break
nachletterGrade = "D";
haben sollte und man nachletterGrade = "F"
für einfache Lesen/Bearbeiten. - Jungs, das war vor 4 Jahren, geben Sie ihm einen rest
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, meine Vermutung ist, dass Sie geben Sie einen numerischen Grad 0-100, und dass der Brief Noten, die Sie wollen gehen, wie "90-100: A; 80-89: B; ...; 60-69: D; 0-59: F".
Wenn das nicht der Fall, ist Ihre erste Lektion zu lernen über die Programmierung ist: der wichtigste Teil der Codierung ist eindeutig schreiben Spezifikationen und Anforderungen
Having said that, es gibt intelligente und dumme Ansätze.
Dumm Ansatz:
Verwenden Sie einen Schalter auf der "input" - wie Sie jetzt
Da die Werte 90, 91... 100 sind, sollen alle werden gleich behandelt, Sie alle als separaten switch Fällen aber nur die Arbeit in den letzten (bekannt als fall-through; sehen SwitchDemo2 auf dieser Seite, wie das funktioniert)
Für den letzten Wert (sagen wir, 90, wenn Sie beginnen mit 100 und gehen nach unten), die switch-Anweisung wäre letterGrade = "Ein"; break;
wenn Sie erreichen bei 89, wiederholen Sie die gleiche Logik, wie Sie für 100 bis 90
Lather, Spülen, Wiederholen Sie, bis 60
Griff Fs als Standard-Fall.
Dies wird eine sehr lange, ziemlich dumm (wie etwa brute force) und sehr ärgerlich zu schreiben und ein brillantes Hilfsmittel für Sie, warum Sie nie schreiben wollen, dumm-code wieder, wenn Sie kann es helfen.
Elegantere Lösung (fügen entsprechende Star-Wars-Zitat hier)
Recht, es ist die Tatsache, dass, abgesehen von 100, alle sind 2-diit #s beginnend mit 9.
So, behandeln Sie alle in 1 case-Anweisung, wäre es nicht wunderbar, zu wechseln auf einen Wert ein, der Ihnen "9" für alle #s zwischen 90 und 99?
Ich hoffe, Sie wissen die Antwort sofort... Hinweis unten...
Ja, dividieren halt das ganze durch 10!
So, müssen Sie einen Schalter auf Ihrer numerischen Grad diveded by 10,
mit Fällen von 10, 9, 8, 7, 6 und Standard-mapping F.
Hoffe, das deckt ausreichend Boden für Sie zu kommen mit der Lösung, während die zeigen, wie die Analyse könnte auch funktionieren.
Ich kommentierte dies so gründlich, wie ich konnte. Hoffentlich werden Sie in der Lage zu Folgen. Als dies ist keine Hausaufgaben Frage, ich habe kein problem, die Buchung einer Lösung. Manchmal brauchen Sie nur, um zu sehen, den code, um "es", so ist es hier. Wenn Sie Fragen haben über das, was ich geschrieben habe, einen Kommentar hinterlassen und ich werde klären, die Antwort.
Und hier ist eine wirklich einfache demonstration dieser Methode:
Wird es drucken Sie den folgenden:
Die switch-Anweisung nicht bedingte Werte, dh es sieht nicht für ein
true
oderfalse
Antwort wieinputGrade >= 70;
, sondern es sieht aus, ob das Elementn
inswitch(
n
)
gleichx
dercase
x
:
.Auch switch-Case-Anweisungen enden mit Semikolon (
:
), nicht Halbfinale.Sehen dieser link für eine Allgemeine Erklärung der switch-Anweisung mit einer bestimmten Java-Beispiel.
Hier ist ein weiterer Tipp, wie dies zu tun.
Was würde passieren, wenn Sie eine ganze Zahl geteilt, die grade mal 10?
Switch-Anweisungen funktionieren nur mit den Werten passend zu den gegebenen Fällen (zusammen mit einem Standard).
Die einzige Möglichkeit, dies zu schreiben, verwenden Sie eine switch-Anweisung ist eine Falle für jeden möglichen Punktzahl.
Würden Sie dies tun möchten:
ODER
Können Sie schneiden Sie es nach unten, um eine Liste von 11 möglichen Fällen, die von der Division durch 10 den ersten.
Verlassen würde Sie mit:
Oder etwas ähnliches (natürlich vorausgesetzt, dass die Sorten entsprechend 50+ = E, 90+ = A und so weiter).
Hier ist ein Ansatzpunkt: Die 'A' - Zeichen, als Ganzzahl, die den Wert 65. Was denken Sie, was passiert, wenn Sie konvertieren Sie den Wert 66 zu einem Zeichen?
diese Korrektur vorzunehmen
und
Haben Sie bedeckt Enums noch? Mein Vorschlag wäre, zu überlegen, wie eine Aufzählung könnte Ihnen helfen, erhalten auf Ihre Antwort. Tut mir Leid, ich kann Ihnen nicht mehr helfen, als, dass ohne zu ruinieren Ihren aha-moment.
Ich don ' T sehen überall in Ihrem code, wo Sie zurück einen Brief.
Möchten Sie vielleicht schreiben Sie es in Englisch, etwas, und sehen, was Sie vermissen.
Zum Beispiel:
Benutzer-Eingaben numerischer Grad
Numerische Note wird Umgerechnet in einen Brief Note
Drucken Sie mit Ziffern und Buchstaben Note.
Dann schreiben Sie sich die wichtigsten schwierige Teil, Teil 2.
Mögliche Typen sind ...
Möglich Eingangsbereiche sind ...
Zurück Brief Note
Wenn Sie schreiben, es uns deutlich mehr, sehr Schritt-für-Schritt, wie das ist, wie der computer es verarbeiten, dann sollten Sie sehen, wie es zu tun.
Vorgeben, Sie erklären einem zweiten grader, wie dies zu tun, es hat sehr grundlegende Anweisungen.
First off, wenn Ihre Funktion ist es, eine Klasse als integer und geben einen Brief grade, warum hat er einen Rückgabetyp
double
?Nach dem Umgang mit diesem, hier ist ein Tipp:
Die Klasse konnte im Bereich von 0 bis 100, so dass 101 Fälle zu behandeln, in deiner switch-Anweisung. So könnte man schreiben, alle 101 Fälle, wenn Sie wollten. Aber, können Sie denken, ein Weg, um zu reduzieren die Anzahl der Fälle? (großer Tipp: alle grade-Grenzen sind ein Vielfaches von 10)
Ich war gelangweilt und kam mit dieser. Ich weiß es nicht, verwenden Sie switch-Anweisungen, aber anywho:
Ich wollte nur sehen, ob ich es schaffen könnte die Verwendung von Zeichen-codes. Wahrscheinlich gibt es einen noch kürzeren Weg, aber naja 🙂 Oh, und sorry, es ist C#.
Wie wäre es damit:
Dies setzt Voraus, dass
pct
ist positiv. Es verwendet eine einzelneif
Aussage, also ich bin mir nicht sicher, ob dies qualifiziert als eine gültige Lösung oder nicht.