Telefon

Neue Frage »

Auf diesen Beitrag antworten »
JKU11 Telefon

Meine Frage:
Hy hätte ne Aufgabe, weiß aber nicht recht ob das so sinvoll ist wie ich es gelöst habe: It is often easier to remember a telephone number if a word is associated with it.
For example, BBC NEWS = 222 6397, and PROGRAM = 776 4726.

Write a Java program that takes as input a 7 character word and outputs the associated telephone
number.

The program should prompt the user for 7 input characters and output 7 numbers as follows:
Input: BBCNEWS
Output: 2226397

Meine Ideen:
Habe momentan einfach 7 Inputs mit unterschiedlichen Variablen genommen und die ganzen cases mit der switch Anweisung gelöst. Sind bei mir jetzt 580 Zeilen code und fast nur cases.

Gibt es eine andere Lösung als die?

Beste Grüße
 
Auf diesen Beitrag antworten »
Karlito

Hallöchen,

das geht auf jeden Fall effektiver. Lies einen ganzen String. Danach sollte es möglich sein, mit String.getBytes() die einzelnen Zeichen in einer Schleife zu verarbeiten und die Ausgabe zu erstellen.

Sollte das nicht genug Details liefern, sag bescheid. Erstmal respektabel, dass du es probierst und dafür auch >500 Zeilen in kauf nimmst! Nur so lernt man auch gut. Gern helfe ich dir weiter, solltest du noch Probleme haben. Vlt kannst du auch deinen Quelltext posten. Das würde mir das Arbeiten auch ein wenig erleichtern.

VG,

Karlito
Auf diesen Beitrag antworten »
JKU11

Danke für die Antwort smile

Naja das Problem ist halt, dass das ne Übung ist die wir dann abgeben müssen und dafür auch benotet werden. Das String.getBytes() hatten wir noch gar nicht in der Vorlesung, daher weiß ich auch nicht ob das "erlaubt" wäre. Dachte eher an Arrays? :/

Hier der code:
Auf diesen Beitrag antworten »
Karlito

Hallo,

dann deklariere doch ein Array mit 7 Elementen und befülle es in einer schleife mit deinen Input.readChar();

z.B. (ich weis nicht ob das korrekte Java-Syntax ist)
code:
1:
2:
3:
4:
5:
6:
7:
char[] input = new char[7];

for(int i = 0; i<7; i++){ //achtung! es wird bei 0 mit zählen begonnen
	input[i]=Input.readChar();
}


Deine ganzen Case-Fälle hängen alle nur von der Eingabevariable ab. Du machst hier 7 mal das selbe und es ändert sich nur die Variable. D.h. es wäre gut, wenn du das in eine Funktion packen würdest. Dann übergibst du immer nur einen anderen Wert und bekommst die dementsprechende Ausgabe.

Weiter optimieren könntest du, indem du die Fälle nich als Buchstaben abarbeitest, sondern numerisch. Jeder char entpricht einer Zahl. Du müsstest mit if anstatt case arbeiten, könntest jedoch auf 10 Fälle reduzieren und auch leicht auf kleinbuchstaben reagieren.

z.B.
code:
1:
2:
3:
4:
5:
if (buchstabe>=37&&buchstabe<=40){
System.out.println("1");
}


37 und 40 sind nur Beispiele. Aber vlt findest du die richtigen Werte heraus?

VG,

Karlito
 
Auf diesen Beitrag antworten »
JKU11

Vielen Dank erstmal, werde es mal ausprobieren.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »