# eine Variable bei charAt() benutzen?



## jupina (22. Jan 2014)

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

```
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 (22. Jan 2014)

Hi,

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

MfG


Machareder


----------



## Machareder (22. Jan 2014)

Ok, 
bevor ich heut nicht mehr dazu komme:

Dein 
	
	
	
	





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

deine eingabe ist ein 
	
	
	
	





```
String
```
und dein p ein 
	
	
	
	





```
int
```

dann müsste es eigentlich wunderbar funktionieren 

MfG

Machareder


----------



## jupina (22. Jan 2014)

```
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 (22. Jan 2014)

Moin,



jupina hat gesagt.:


> 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 :


jupina hat gesagt.:


> ```
> // ...
> int p=0, q=49;   //ok, 'p' ist hier also '0'
> // ...
> ...



Gruß
Klaus


----------



## Machareder (22. Jan 2014)

ok... irgendwie hab ich keine Ahnung was du überhaupt willst


----------



## VfL_Freak (23. Jan 2014)

Moin,



Machareder hat gesagt.:


> 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


----------



## Machareder (23. Jan 2014)

nene ich mein nicht dich 
ich mein den Threadstarter ^^
weil er erst irgendwas mit dem Wort Hausaufgabe wollte


----------



## VfL_Freak (23. Jan 2014)

Moin Machareder,

oops - stimmt 
Ist wohl noch zu früh und/oder zu kalt 

Gruß
Klaus


----------



## jupina (23. Jan 2014)

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.

```
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 (24. Jan 2014)

Moin,



jupina hat gesagt.:


> probe.java:26:32: incompatible types
> found   : char
> required: java.lang.String


hmm, auch die Meldung ist doch eindeutig 


```
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


----------



## jupina (24. Jan 2014)

ehrlich gesagt hab ich kein plan von dem was du schreibst D:
ich kenn die datentypen string, int, double.


----------

