# Methode die String in char-Array wandelt!!



## nixblicker100 (18. Jun 2011)

Hallo zusammen 


und zwar habe ich folgendes Problem:

Schreiben sie eine Methode, die all Argument einen beliebingen String übergeben bekommt, diesen in ein Character-Array umwandelt und dieses schlussendlich als Ergebnis zurückgibt.

Dabei sollen natürlich keine vorgeferitgten Methoden wie toCharArray genommen werden.

weiter folgt: Implementieren sie die Methode innerhalr einer Klasse StringUtils. Legen sie in dieser Klasse auch eine main-Methode an, mit Hilfe derer Sie die korrekte Funktion Ihrer Methode testen.

Nach 2 stündigem Kampf hat mein Programmm jetzt noch zwei Fehler die einfach nicht verschwinden. Es wäre total nett, wenn mir irgendjemand sagen könnte was ich denn da falsche mache?? 

Also hier erst mal mein Quelltext :

import IOulm.*;
public class StringUtils {

//Eine Methode, die als Argument einen String bekommet und diesen in ein Character-Array umwandelt//

static char [] methode1(char[]arr){
String s = "";

	if ( Urc.readString()) {
		s =  Urc.getString();


	for ( int i = 0; i < s.length() ; i++){

		arr_= s.charAt(i);

	 }
	}
	for( int i = 0; i < s.length() ; i++){


	return arr;

	}
}	

	public static void main(String[] args) {



	String s = "";
	int dim = s.length();
	char[]arr = new char[dim];

	int i = 0;

	arr = methode1(s);

	System.out.println( arr);	

	}
}

und die Fehler wären :

StringUtils.java:24: incompatible types
found   : char
required: char[]
        return arr;
                  ^
StringUtils.java:40: methode1(char[]) in StringUtils cannot be applied to (java.lang.String)
        arr = methode1(s);
                 ^
2 errors


Vielen Dank schonmal _


----------



## nixblicker100 (18. Jun 2011)

vielleicht könntem ir auch noch jemand helfen wie ich den Text so schön bunt hingekomme, das er leichter für euch zu lesen ist


----------



## Marcinek (18. Jun 2011)

Das ist hochgradig geraten, was hier passiert

Deine Methode muss


```
static char [] methode1(String arr){
```

Und 


```
if ( Urc.readString()) {
s = Urc.getString();
```

Kann ich dir jetzt scon sagen, dass du da zwei mal was eingeben musst.

Und das in methode1 () fachlich falsch aufgerufen wird.

Dann haben wir noch 

Attention!   Java™ Quelltext ist bitte in 
	
	
	
	





```
-Tags zu schreiben: [code=Java]hier Java Code einfügen
```


----------



## nixblicker100 (18. Jun 2011)

```
import IOulm.*;
public class StringUtils {
    
//Eine Methode, die als Argument einen String bekommet und diesen in ein Character-Array umwandelt//

static char [] methode1(char[]arr){
String s = "";

	if ( Urc.readString()) {
		s =  Urc.getString();
		

	for ( int i = 0; i < s.length() ; i++){
	
		arr[i]= s.charAt(i);
		
	 }
	}
	for( int i = 0; i < s.length() ; i++){
	
	
	return arr[i];
	
	}
}	

	public static void main(String[] args) {

	
	
	String s = "";
	int dim = s.length();
	char[]arr = new char[dim];

	int i = 0;
	
	arr[i] = methode1(s);

	System.out.println( arr[i]);	
	
	}
}
```


----------



## XHelp (18. Jun 2011)

nixblicker100 hat gesagt.:


> vielleicht könntem ir auch noch jemand helfen wie ich den Text so schön bunt hingekomme, das er leichter für euch zu lesen ist



Da musst du nur den *dezenten roten Text* auf der Seite lesen, wo etwas über JAVA-Tags steht.

Zu deinem Problem:
Deine Methode ist generell komisch aufgebaut. Der Methode wird ein Char-Array übergeben und da passiert auch eine Eingabe... :bahnhof:
Es sollte ungefähr so aussehen:

```
public static char[] machwas(String s) {
  //hier eben s in char[] machen
}
public static void main(String[] args) {
  String s = "irgendwas";
  char[] res = machwas(s);
}
```


----------



## nixblicker100 (18. Jun 2011)

Danke Marcinek für die schnelle Antwort, aber leider versteh ich nicht so recht was ich jetzt machen soll?


----------



## Volvagia (18. Jun 2011)

Memo an mich selbst: Niemals etwas groß und rot schreiben, es bringt eh nichts.

Du hast ein Array: x[].
Dieses Array hat einfach gesagt mehrere Variablen, auf die du mit [y] zugreifst. Wenn du auf "arr_" zugreifst, gibst du nur einen char zurück, erwartet aber ein Array "static char []...". Es ist nicht möglich, mehrere Returnwerte in einer Schleife zu benutzen, du musst das ganze Array per "return(arr)" zurückgeben.

Du willst in der Main einen String übergeben, die Methode erwartet aber chars. "...methode1(char[]arr)"_


----------



## nixblicker100 (18. Jun 2011)

sorry ich bin echt zu blöd...


```
import IOulm.*;
public class StringUtils1 {
    
//Eine Methode, die als Argument einen String bekommet und diesen in ein Character-Array umwandelt//

static char [] methode1(String s){ //String übergeben//


	if ( Urc.readString()) {
		s =  Urc.getString();
		

	for ( int i = 0; i < s.length() ; i++){
	
		arr[i]= s.charAt(i);
		
	 }
	}
	for( int i = 0; i < s.length() ; i++){
	
	
	return (arr);
	
	}
}	

	public static void main(String[] args) {

	
	
	String s = "";
	int dim = s.length();
	char[]arr = methode1(s);

	System.out.println( arr[i]);	
	
	}
}
```

mittlerwiele sind es 5 fehler 


```
StringUtils1.java:7: s is already defined in methode1(java.lang.String)
String s = "";
       ^
StringUtils1.java:15: cannot find symbol
symbol  : variable arr
location: class StringUtils1
                arr[i]= s.charAt(i);
                ^
StringUtils1.java:22: cannot find symbol
symbol  : variable arr
location: class StringUtils1
        return (arr);
                ^
StringUtils1.java:22: illegal start of type
        return (arr);
               ^
StringUtils1.java:35: cannot find symbol
symbol  : variable i
location: class StringUtils1
        System.out.println( arr[i]);
                                ^
5 errors
```


----------



## Volvagia (18. Jun 2011)

Das ist nicht böse gemeint, aber mach dir doch ein bischen mehr Gedanken darüber, was du tust.
Du übergibst einen String, diesen ersetzt du dann mit den Rückgabewert von "Urc.getString()", wenn readString true ist. Komisches Verhalten, muss aber nicht falsch sein, kenne Urc nicht. Dann versuchst du in das Array arr zu schreiben, welches garnicht existiert. Dann versuchst du, in einer Schleife mit return das Array n-mal zurückzugeben. Mit return endet auch die Methode. (Ausgenommen finally, aber derzeit egal.). Zudem wird, wenn s.length() kleiner als 0 ist (logisch gesehen nicht möglich, aber das weiß der Compiler ja nicht) die Schleife garnicht ausgeführt, und auch nichts zurückgegeben. Um diese Möglichkeit zu verhindern -> Fehler.


----------



## nixblicker100 (18. Jun 2011)

Ja aber wie mach das denn mit der Rückgabe? Was kommt dann in die return Anweisung rein, dass er alles auf einmal ausgibt und nicht gleich beendet?


----------



## Volvagia (18. Jun 2011)

Am Ende der Methode, nicht irgendwo in eine Schleife.


```
static char [] methode1(String s)
{
	//if (Urc.readString())
		//s =  Urc.getString();

	char[] arr = new char[s.length()];
	for(int i = 0; i < s.length(); i++)
		arr[i]= s.charAt(i);
	return (arr);
}
```

Übrigens, wenn du Methoden kommentierst wäre es vorteilhaft, den JavaDoc-Kommentar zu verwenden:


```
/** Text */
static char [] methode1(String s)
...
```


----------



## nixblicker100 (18. Jun 2011)

Juhu...Vielen Dank für die Geduld 
Es hat geklappt!!!!!


----------

