Feld mit beliebiger Anzahl von Buchstaben füllen...

loveDJ

Mitglied
Hallo

Ich habe hier eine Aufgabe in der man die ersten n Buchstaben des Alphabetes in einem Feld zusammenfassen soll und diese sollen dann ausgegeben werden. Das klappt bei mir schonmal nicht richtig. Ich kann zwar das gesamte Alphabet in ein Feld geben und es ausgeben lassen aber wenn es nur die ersten paar Buchstaben sein sollen komme ich auf keine passende Lösung.
Es sieht bei mir bis jetzt wie folgt aus:
Code:
public class Alphabet {

    static char alphabetfeld (int c){
       
        char[] alphabet = new char[26];
       
        for( int i=0; i<=alphabet.length; i++, c++){
            alphabet[i] = (char) c;
             System.out.print(alphabet[i]+"  ");
             }
        return (char) c;
    }
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int c = 65;
        alphabetfeld(c);

Wie kann man denn jetzt sagen das nur die ersten 5 oder 8 Buchstaben eingefügt werden sollen? Die 65 entspricht ja laut ASCII dem großen A. Wenn ich nun A-D im Feld haben möchte müsste bei mir c=69 sein aber wenn ich einfach c auf 69 setze lässt er nur A-D aus.. Also ich hab keine idee was ich ihm sagen müsste damit er es genau anders rum macht.
Weiterhin soll das Programm, sofern alle 26 Buchstaben schon enthalten sind, wieder von vorne anfangen das Feld zu befüllen, also nach Z soll wieder A kommen, das wäre dann mein nächstes Problem wo ich nicht weiter komme.
Ich würde mich riesig freuen wenn ihr mir weiterhelfen könntet 🙂
Vielen Danke schonmal.
 
Kurzer Nachtrag. Ich hab es jetzt geschafft das das Feld, wenn es schon mit A-Z gefüllt ist, danach wieder mit A gefüllt wird und so weiter. Habe nun ein Feld das 2 mal das Alphabet enthällt.
Wie das jedoch mit der vorgeschriebenen Anzahl an Buchstaben funktioniern soll, weiß ich leider immer noch nicht :/
 
Du kannst chars auch vergleichen ohne mit den ASCII Werten zu rechnen. Dann fängst du einfach bei 'A' an und fügst so lange die Buchstaben ein bis aktuellerBuchstabe==deinLetzterCharakter.

Beispiel:
Java:
    public static void main(String[] args) {
        char lastChar = 'F';
        char[] array = new char[lastChar - 'A' + 1];

        int i = 0;
        for (char c = 'A'; c <= lastChar; c++) {
            array[i++] = c;
        }
        System.out.println(Arrays.toString(array));
    }
 
Das Problem ist das ich eine Methode schreiben muss und die bekommt zum Beispiel n=5 übergeben und dann sollen die ersten 5Buchstaben ausgegeben werden. Ich glaube da wird das schwierig mit dem lastChar=.... Dann müsste ich ja erstmal rausfinden welchem Buchstabe n entspricht und das dann lastChar übergeben oder? Aber wie findet man raus welchem Buchstabe n entspricht?
 
Naja, du weißt ja das 'A' der erste ist. Daraus kannste dann ja den letzten berechnen.
Java:
char lastChar = (char) ('A' + n);

Das klappt natürlich nur solange n<=26 ist. Wenn du jetzt von vorne anfangen musst, dann brauchst du vermutlich was mit dem Modulo Operator.
 
Also ich hab es jetzt gelöst... Saß vor paar Tagen am Rechner und aufeinmal schrieb sich das Programm ganz fix, keine Ahnung was da mit mir los war 😀
Ich poste den fertigen Code einfach mal, falls jemand ein ähnliches Problem haben sollte..
Code:
static char alphabetfeld (int n){
       
        char[] alphabet = new char[52];                       //hinreichend großes Feld um 2x Alphabet aufzunhemen
        int c = 65;                                          //großes A laut ASCII-Tabelle
                                                              //char c = 65;  äquivalent obere Zeile
        for( int i=0; i<=n-1; i++, c++){
            alphabet[i] = (char) c;
             System.out.print(alphabet[i]+"  ");
            
             if(c==90){c=c-26;}                                //bei Z angekommen. Feld wird wieder ab 65 'A' gefüllt
             }
        return (char) c;
    }
 

Zurück
Oben