Umwandlung String zu ASCII-Wert und anders

jono

Top Contributor
Guten Abend,

1. Mein Problem ist, dass bei der angehängten Datei nicht richtig gerundet wird. Wenn ich "Halloa" eingebe sollte der Mittelwert normalerweise auf 99 gerundet werden und es sollte "c" am Ende ausgegeben werden statt "b". Da ich nicht weiß, warum es nicht in der Form mit Math.round() funktioniert hat wie ich es gemacht habe, wollte ich euch mal fragen.
2. Oben versuche ich mit -> if (text==null) usw. auf einen leeren String zu überprüfen. Es sollte bei Eingabe von "" im Eingabefeld auch wieder "" ausgegeben werden statt " .
3. Ich habe von meinem Korrektor gesagt bekommen, ich soll den Scanner nicht mehr benutzen. Wie ist das mit der Aufgabe zu vereinbaren, das verstehe ich nicht wirklich.
Vielen Dank .

Java:
import java.util.Scanner;
public class Functionality {

    public static void main(String[] args) {
        
    Scanner scan = new Scanner(System.in);
    System.out.println("Gebe ein String ein: ");
    String text = scan.nextLine();
    scan.close();
        
    System.out.println(stringMean(text));
    }
    
    public static String stringMean (String text)
    {
    if (text == null) {
        System.out.println("");
    }
    double mittelwert = 0;
    double  summe = 0;
    char[] chars = text.toCharArray();
    
    for(int i=0;i<chars.length;i++) {
    System.out.println((int)chars[i]);
    
    summe += chars[i];
    
    }
    System.out.println("Summe:" + summe);
    
    mittelwert = summe/chars.length;
    System.out.println("Mittelwert: " + mittelwert);
    
    if (summe % chars.length != 0) {
        Math.round(summe/chars.length);
    }
    double number[] = {mittelwert};
    text = null;
    for(double i: number){
    text = Character.toString((char)i);
     
    }
    return text;        
} }

Java:
Erstellen Sie die Klasse Functionality.java und bearbeiten Sie die folgende Aufgabe:

Implementieren Sie eine statische-public-Methode mit dem Namen "stringMean", welche einen String erhält und wieder einen String zurückgibt.

Die Methode soll den Mittelwert von einem String berechnen.
Der Mittelwert wird berechnet, indem man von jedem einzelnen Character im String den dezimalen ASCII-Wert nimmt, zusammenrechnet und durch die Länge des Strings teilt. 

Sollte bei der Division keine Ganzzahl herauskommen, dann muss man die Methode Math.round(double) verwenden um die Zahl zu runden. Der gerundete Mittelwert muss dann auf dem umgekehrten Weg in einen String umgewandelt werden.

Sollte der String leer sein, dann muss ein leerer String zurückgegeben werden.
 
Ich habe jetzt mittelwert = Math.round() gesetzt. Ist das richtig? oder stehe ich immer noch aufm Schlauch weil da wird ne Fehlermeldung angezeigt
 
Okay, danke es hat jetzt funktioniert, kannst du mir vielleicht noch netterweise bei den anderen Fragen behilflich sein ?
 
Oben versuche ich mit -> if (text==null) usw. auf einen leeren String zu überprüfen. Es sollte bei Eingabe von "" im Eingabefeld auch wieder "" ausgegeben werden statt " .
Langsam, das sind jetzt drei verschiedene Dinge:

1. null ist kein leerer String, sondern null bedeutet, dass die Referenz nicht auf ein Objekt zeigt.
2. Objekte (wie Strings) vergleicht man mit equals. Außerdem wäre ein leerer String eine Zeichenkette der Länge 0 und die Klasse String bietet zusätzlich die Methode isEmpty(), mit der auf leere Strings getestet werden kann.
3. Deine Anführungszeichen verstehe ich nicht. Sollen die ein- bzw. ausgegeben werden?!?

Ich habe von meinem Korrektor gesagt bekommen, ich soll den Scanner nicht mehr benutzen. Wie ist das mit der Aufgabe zu vereinbaren, das verstehe ich nicht wirklich.
Ich kenne die Aufgabe nicht 🙂
 
Java:
[ATTACH type="full" alt="12627"]12627[/ATTACH]
 

Anhänge

  • 1574101969200.png
    1574101969200.png
    115,1 KB · Aufrufe: 7
Ich habe mich auf den "PublicTest" bezogen , in dem gewisse Eingaben stehen, welche zu den dort aufgeführten Ausgaben führen sollen, damit es auch korrekt ist, bzw. so ist wie ich der Korrektor das vorstellt , aber damit ist ja die Überprüfung eines leeren Strings gemeint mit den Anführungszeichen, deshalb die 2. Frage von mir ist etwas schwammig formuliert mir geht es im Endeffekt jetzt darum korrekt auf den leeren String zu überprüfen
 
Java:
[ATTACH type="full" alt="12630"]12630[/ATTACH]
 

Anhänge

  • 1574102257053.png
    1574102257053.png
    108 KB · Aufrufe: 3
expected:<[]> but was:<[]>
der Teil sagt eigentlich aus was nicht korrekt ist eventuell kannst du das deuten ?

Java:
[ATTACH type="full" alt="12631"]12631[/ATTACH]
 

Anhänge

  • 1574102346568.png
    1574102346568.png
    180,2 KB · Aufrufe: 5
Was habe ich bei dem .isEmpty() nicht beachtet bzw. falsch codiert?
Ich weiß, dass das eigentlich ein kleines Problem , mache es mir glaube ich etwas zu komplziert 😀
aber bin ja noch ziemlich am Anfang aber komme gerade einfach nicht drauf 😀
 
Erstmal zu 3.: Vermutlich soll die Klasse auch keine main-Methode haben. Sie bietet die Methode stringMean, die den Strnig als Parameter erhält.

Zu 2.:
Java:
if (text == null || text.trim().isEmpty()) {
    return "";
}
Durch das trim() werden auch Strings, die nur aus Leerzeichen bestehen, zu einem leeren String.
 
Das return bewirkt, dass der leere String an den Aufrufer der Methode zurückgegeben wird. Und die Klasse ohne main-Methode erhältst Du, indem Du die main-Methode einfach rauslöscht.
 

Zurück
Oben