Wie man die Summe von char-Werten erzeugt in einer Schleife?
Sorry, wenn der Titel ist irreführend oder verwirrend sein, aber hier ist mein dilemma.
Ich bin der Eingabe einen string, und möchte einen Wert zuweisen jedes großgeschriebene Buchstaben im alphabet (A=1, .. Z=26) und fügen Sie dann die Werte der einzelnen Buchstaben in diesem string.
Beispiel: ABCD = 10 (da 1 + 2 + 3 + 4)
Aber ich weiß nicht, wie, um alle Werte in der Zeichenfolge
HINWEIS: Dies ist nur für aktivierte Buchstaben und Zeichenfolgen
public class Test {
public static void main(String[] args) {
Scanner scannerTest = new Scanner(System.in);
System.out.println("Enter a name here: ");
String str = scannerTest.nextLine();
char[] ch = str.toCharArray();
int temp_integer = 64;
for (char c : ch) {
int temp = (int) c;
if (temp <= 90 & temp >= 65){
int sum = (temp - temp_integer);
System.out.println(sum);
}
}
}
}
So, wie Sie sehen können ich ausdrucken der Summe für jedes mal, wenn seine geschlungen,
heißt: wenn ich Eingang "AB", wird der Ausgang 1 und 2.
Allerdings möchte ich einen Schritt weiter gehen, und fügen Sie diese beiden Werte zusammen, aber ich bin überfragt, Anregungen oder Hilfe? (HINWEIS: dies ist keine Abtretung oder nichts, nur üben, problem-sets)
- Sie erkennen, dass diese Zeile:
if (temp <= 90 & temp >= 65);
hat keinen Zweck in deinem code richtig? Einif
- Anweisung muss mindestens eine Zeile nach der es ohne die Klammern, ohne, dass es nur einen code, der wird keinen Unterschied machen. - Da Sie in der Lage sind, den integer-Wert für jeden aktivierten Brief schon, warum man nicht einfach fügen Sie Sie in der for-Schleife, um die Summe?
- Java baut auf ASCII-Zeichen, also ASCII-die Zahl 65 entspricht "A" und 90 steht für "Z", und ich brauche es, dass parameter, oder ich bekomme falsche Werte, wenn Sie/, wenn Sie geben Sie Kleinbuchstaben
- Ich weiß, dass ich bin mir bewusst, dass ich da bin Programmierer seit 1989, angefangen auf MS-Basic. Du verstehst nicht, was ich meine. Lesen Sie es langsam und versuchen zu verstehen, was es bedeutet.
- Ich weiß nicht, den code zu tun, ich bin ein Anfänger in Java, also bitte ich zu entschuldigen, der code, den ich schrieb druckt die Summe des Wertes der EINZELNEN Zeichen, aber ich weiß nicht, was zu schreiben, drucken Sie die Summe der Werte der einzelnen Zeichen
- Ihr code drucken nicht die Summe, es druckt die aktuelle großgeschrieben Brief integer-Wert MINUS 64 Konstante, die von 1 bis 26
- Ah okay, sorry, ich muss versehentlich Hinzugefügt ein ";" statt einem "{" , ich habe es jetzt behoben, danke
- und ja, dass ist es, was ich meinte, es druckt die aktuelle großgeschrieben Brief integer-Wert, - 64, ich versuche jetzt zu finden, den code, das wird mir erlauben, zu finden, die Summe
- kein problem. Ich war das hinzufügen einer Antwort, ohne code, nur Richtungen, da Sie das lernen sind. Aber die Leute hier wird eifrig um Stimmen. Sie haben bereits zwei Antworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde es vorziehen, verwenden Sie die Zeichen-Literale. Sie wissen, dass die Reichweite
A
zuZ
(1
zu26
), so können Sie subtrahieren 'A' von jedemchar
(aber man muss hinzufügen, 1 weil es kein start bei0
). Ich würde auch anrufentoUpperCase
auf die Eingabezeile. So etwas wie,Denen, die ich getestet habe mit deinem Beispiel
s
alle Formate Wert als string. undd
Formate einen integer-Wert als dezimal-Wert. undn
gibt eine Plattform-spezifische Zeilenende-Zeichen.64 zur Darstellung der Zeichen vor dem 'A' in der ascii-Tabelle ist schwer zu verstehen, die Sie ausführen können substration zwischen Zeichen in Java direkt.
Also wenn 'Ein' stellen 1, dann eben c - 'A' + 1 wird Ihnen der entsprechende integer-Wert für jedes großgeschriebene Buchstaben.
Bekommen die Summe, einfach addieren: initialisieren Sie die Summe als 0, und in der for-Schleife, add increment Summe durch den Wert, den Sie berechnet. Sie können die inkrementellen Zuordnung Betrieb: +=
Ändern nur Ihr für diesen:
Den
sum += (int) ch[i] - 96;
ist, weil der chara
ist der Wert 97, wie Ihr sagt, Ihr wollt einen char corresponde 1, beachten Sie, dassa
ist anders alsA
Überprüfen Sie die char-Wert hier: https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html
Dieser wurde getestet und funktionierte einwandfrei! Viel Glück
Es würde in etwa so Aussehen (in Programmiersprache C), die man leicht ändern, für andere Programmier-Sprachen:
Der trick ist es, den Charakter Wert, subtrahieren Sie die baseline-Wert 'A' und fügen Sie 1 hinzu kommen bei Ihrer Berechnung-Bereich:
Erreichung desselben in einer prägnanten Art und Weise durch den Einsatz von Java 8 lambda-Funktionen