eine Variable bei charAt() benutzen?

jupina

Mitglied
Hallo!
ich versuche gerade die einzelnen Buchstaben eines Wortes, in ein array zu übertragen
(es gibt sicherlich elegantere Lösung aber ich würde es gern mit meinem Gedankengang versuchen).
bei der Methode charAt() kann man in den Klammern ja die Position einfügen, die angeschaut werden soll. Kann man da auch Variablen benutzen? Also wenn ich jetzt p=5 habe und die Variable (hier 'eingabe' genannt) das Wort "Hausaufgabe" enhält, kann ich dann schreiben
Java:
System.out.println(eingabe.charAt(p-1));
???
theoretisch müsste er dann ja "a" ausgeben, aber irgendwie funktioniert das nicht! D:
jemand einen Tipp, wie ich das mit der Variable da lösen kann?
 

Machareder

Bekanntes Mitglied
Hi,

habs ausprobiert, funktioniert eigentlich wunderbar :D
poste einmal deinen kompletten Code, vllt hast du blos einen kleinen Fehler ;)

MfG


Machareder
 

Machareder

Bekanntes Mitglied
Ok,
bevor ich heut nicht mehr dazu komme:

Dein
Java:
System.out.println(eingabe.charAt(p-1));
funktioniert ist also richtig
so jetzt noch folgende tipps:

deine eingabe ist ein
Java:
String
und dein p ein
Java:
int

dann müsste es eigentlich wunderbar funktionieren :D

MfG

Machareder
 

jupina

Mitglied
Java:
import java.util.*;
public class probe
{
  public static void main (String args[])
  {
    Scanner tastatur;
    tastatur = new Scanner (System.in);
    String eingabe;
    String[] array;
    array = new String[50];
    int p=0, q=49;
    
    String[] buchstaben;
    buchstaben = new String[6];
    buchstaben[0]="A";
    buchstaben[1]="B";
    buchstaben[2]="C";
    buchstaben[3]="D";
    buchstaben[4]="E";
    buchstaben[5]="F";
    eingabe = tastatur.next();
    q=eingabe.length();
    
    while (p<eingabe.length())
    {
      array[q] = eingabe.charAt(p-1);
      q--;
      p++;
    }
    
  }
}

das ganze gehört eigentlich in ein größeres teil und es is auch noch nich fertig . . .
 

VfL_Freak

Top Contributor
Moin,

theoretisch müsste er dann ja "a" ausgeben, aber irgendwie funktioniert das nicht!
Zuerst mal: "funktioniert nicht" ist KEINE Fehlerbeschreibung !!!
Ggf. eine auftretene Fehlermeldung mit posten oder zumindest eine Beschreibung dessen, was Deiner Meinung passieren SOLL und was stattdessen passiert !!


Mir ist aber so auf die Schnelle folgendes aufgefallen :
Java:
// ...
    int p=0, q=49;   //ok, 'p' ist hier also '0'
// ...
    while (p<eingabe.length())
    {
        // da 'p' bis hierher nicht verändert wurde, wird nun als erstes versucht, 
        // an der Stelle 'p-1' (also mithin -1) zu lesen !!!!
      array[q] = eingabe.charAt(p-1);
      q--;
      p++;
    }
// ...

Gruß
Klaus
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

irgendwie hab ich keine Ahnung was du überhaupt willst
:shock:

Nun, zuerst einmal möchte ich wissen, welche Fehlermeldung auftritt ..... oder zumindest eine Beschreibung dessen, was Deiner Meinung passieren SOLL und was stattdessen passiert !!

Und wie ich im Code schon schrieb:
Du rufst dort "eingabe.charAt(p-1)" auf. Da aber 'p' bis dahin den Wert 0 hat (zumindest beim ersten Mal), wird also versucht "charAt" mit der Position -1 aufzurufen, was schief gehen MUSS !!

Gruß
Klaus
 

jupina

Mitglied
das ganze soll irgendwann mal hexadezimalzahlen in dezimalzahlen umwandeln. (das gehört dann eigentlich in ein programm, was sowohl binär, dezimal und hexadezimal in die anderen umwandeln kann). Darum ergeben vllt ein paar von den sachen da keinen richtigen sinn.
vllt is mein weg ein wenig umständlich aber ich hoffe dass ich damit trotzdem zum ziel kommen werde.

Das mit dem -1 hab ich geändert (bin wohl ein bisschen mit q und p durcheinander gekommen
da is jetzt das korrigierte.
Java:
import java.util.*;
public class probe
{
  public static void main (String args[])
  {
    Scanner tastatur;
    tastatur = new Scanner (System.in);
    String eingabe;
    String[] array;
    array = new String[50];
    int p=49, q=0;
    
    String[] buchstaben;
    buchstaben = new String[6];
    buchstaben[0]="A";
    buchstaben[1]="B";
    buchstaben[2]="C";
    buchstaben[3]="D";
    buchstaben[4]="E";
    buchstaben[5]="F";
    eingabe = tastatur.next();
    q=eingabe.length()-1;
    
    while (q<=eingabe.length()-1)
    {
      array[p] = eingabe.charAt(q);
      p--;
      q++;
    }
    p=0;
    while (p<array.length)
    {
      System.out.println(array[p]);
      p++;
    }
  }
}


probe.java:26:32: incompatible types
found : char
required: java.lang.String
array[p] = eingabe.charAt(q);
(hier zeigt dann noch ein pfeil auf die klammer vor dem q)
Das ist die Fehlermeldung die ich bekomme.
 

VfL_Freak

Top Contributor
Moin,

probe.java:26:32: incompatible types
found : char
required: java.lang.String
hmm, auch die Meldung ist doch eindeutig :(

Java:
array[p] = eingabe.charAt(q);
"array" ist bei Dir ein STRING-Array, aber charAt liefert ein char und dadurch klappt halt die Zuweisung nicht !!

Mir ist auch nicht wirklilch klar, was Du da eigentlich machen willst!
Lies Deine Eingabe entweder in ein char-Array oder wandele sie nach dem Einlesen in einen String !!

Gruß
Klaus
 

Neue Themen


Oben