Java Arrays Buchstaben als Zahlen ausgeben?


30.11.2023, 15:21
package a3;

public class A3_main {

public static double toDoubleArray(String [] irgendwas) { 

	

3 Antworten

Du legst erstmal ein Array von double an (sinnvollerweise so groß wie der String lang ist) und befüllst es vom ersten bis zum letzten Index mit den Zahlen. Dafür bietet sich eine Schleife an.

https://dev.java/learn/language-basics/arrays/

Mit etwas Hintergrund Wissen:

char in Java ist eine unsigned Ganzzahl (ohne Vorzeichen; 0 - 65.535). Über UTF-16 gibt wird die Zahl zu einem Zeichen. In Java werden ein char mit als Zeichen ausgegeben und nicht als Zahl.

Mit einem Cast in einen anderen Zahlen Datentyp kann man die Zahl hinter dem char erhalten. Ein int wäre eigentlich der beste Datentyp dafür, da er ausreichend Platz (32 bit; signed) hat und nicht zu groß ist. Ein Double wäre nicht die beste Wahl, aber die Aufgabe wünscht es so.

Um ein Zeichen (char) aus einem String zu bekommen, gibt es die Methode charAt(int index) auf der Klasse String. Damit mit dem String ähnlich zum Array arbeiten. Mit einer For Schleifen von 0 bis (length - 1) kannst du auf alle Elemente zugreifen. Die Rückgabe ist ein char.

Wenn du bereits ein double[] mit der gleichen Länge hast, kannst du mit z.B. i als Index aus der For Schleife auf den String zugreifen. Den erhaltenen char kannst du zum double Casten (bzw. passiert implizit) und beim gleichen Index in dein double[] speichern.

Es gibt auch noch andere Varianten mit Hilfsmethoden.

public static double toDoubleArray(String [] irgendwas) { 

Dieser Methodenkopf ist falsch bzw. passt nicht zur Aufgabenstellung.

Ein String ist bereits eine Art Array vom char. Jetzt willst du in der Methode allerdings ein Array von Strings erhalten. Du hättest also ein Array vom Array vom char. Das wären 2 Dimensionen statt einer gewünschten Dimension.

Im Aufgabentext wird auch nur vom String gesprochen. Der richtige Methodenkopf ist:

public static double[] toDoubleArray(String irgendwas) { 

Die [] müssen Weg, da sie aus dem String ein String Array machen.

Damit wirst du wahrscheinlich zu deinem Ziel kommen.

384749299957933 
Fragesteller
 01.12.2023, 10:52

Danke für die ausführliche Antwort, hat mir sehr weitergeholfen. Allerdings wird mir immer noch ein Fehler angezeigt, deswegen kann ich mein Programm nicht testen.

package a3;
public class A3_main {

public static double toDoubleArray(String irgendwas) { // hier bekomme ich den Fehler: This method must return a result of type double
		
double [] y = new double [irgendwas.length()];

  for (int i = 0; i < irgendwas.length() -1; i++) {
       y[i] = (double) irgendwas.charAt(i);

    }
  }
  

public static void main(String [] args)  {
      String irgendwas = "Hallo";

System.out.println(toDoubleArray(irgendwas));

    }
}

Ich habe ja in der Schleife nach double gecastet oder war das falsch?
0
tide1109  01.12.2023, 17:22
@384749299957933

Es gibt noch ein zweiten Fehler, den ich vorher übersehen habe. Ist jetzt auch in der Antwort angepasst.

Aktuell hast du als Rückgabewert ein einzlnen double. Du willst aber ein double[] (Array) zurückgeben. Füge also die [] hinter double hinzu.

Ein weiterer Fehler, der danach auftreten wird, ist "Missing Return Statement".

Am musst du deine Variable y zurückgeben. Also:

return y;
0

Du erstellst ein Array, was so viele Felder hat, wie Zeichen im Argument sind. Und dann machst du im Prinzip für jeden Buchstaben das, was du schon selbst geschrieben hast.