Mikrowellenzahlen

  • Themenstarter Gelöschtes Mitglied 94076
  • Beginndatum
G

Gelöschtes Mitglied 94076

Gast
Hallo zusammen, ich komme bei dieser Aufgabe nicht weiter. Das Programm wo ich die Datei hochladen soll, gibt mir als Hinweis an, dass nix ausgegeben wird obwohl in IntelliJ schon. Ich bin über jegliche Hilfe sehr dankbar!
Bildschirmfoto 2024-06-07 um 15.19.52.png
Java:
import java.util.Scanner;

public class Mikrowellenzahlen {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String eingabe = scanner.next();

        // Entferne das '*' am Ende der Eingabe
        int gesamtSekunden = Integer.parseInt(eingabe.substring(0, eingabe.length() - 1));

        // Konvertiere Sekunden in Minuten:Sekunden-Format
        int minuten = gesamtSekunden / 60;
        int sekunden = gesamtSekunden % 60;

        // Bilden der beiden möglichen Eingaben
        String sekundenEingabe = String.valueOf(gesamtSekunden);
        String minutenSekundenEingabe = String.format("%d:%02d", minuten, sekunden).replace(":", "");

        // Berechne die Distanzen
        double distanzSekundenEingabe = berechneDistanz(sekundenEingabe);
        double distanzMinutenSekundenEingabe = berechneDistanz(minutenSekundenEingabe);

        // Vergleiche die Distanzen
        if (distanzSekundenEingabe <= distanzMinutenSekundenEingabe) {
            System.out.println(sekundenEingabe + "*");
        } else {
            System.out.println(minutenSekundenEingabe + "*");
        }
    }

    // Methode zur Berechnung der zurückgelegten Distanz auf dem Tastenfeld
    private static double berechneDistanz(String eingabe) {
        int[][] tastenfeld = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9},
                {-1, 0, -1}
        };

        double distanz = 0.0;
        int[] vorherigePosition = getPosition(tastenfeld, Character.getNumericValue(eingabe.charAt(0)));

        if (vorherigePosition == null) {
            System.out.println("Fehler: Ungültige Eingabe " + eingabe.charAt(0));
            return Double.MAX_VALUE; // oder eine andere geeignete Rückgabe
        }

        for (int i = 1; i < eingabe.length(); i++) {
            int[] aktuellePosition = getPosition(tastenfeld, Character.getNumericValue(eingabe.charAt(i)));

            if (aktuellePosition == null) {
                System.out.println("Fehler: Ungültige Eingabe " + eingabe.charAt(i));
                return Double.MAX_VALUE; // oder eine andere geeignete Rückgabe
            }

            distanz += berechneEuklidischeDistanz(vorherigePosition, aktuellePosition);
            vorherigePosition = aktuellePosition;
        }

        return distanz;
    }

    // Methode zur Ermittlung der Position einer Zahl auf dem Tastenfeld
    private static int[] getPosition(int[][] tastenfeld, int zahl) {
        for (int i = 0; i < tastenfeld.length; i++) {
            for (int j = 0; j < tastenfeld[i].length; j++) {
                if (tastenfeld[i][j] == zahl) {
                    return new int[]{i, j};
                }
            }
        }
        return null;
    }

    // Methode zur Berechnung der euklidischen Distanz zwischen zwei Punkten
    private static double berechneEuklidischeDistanz(int[] punkt1, int[] punkt2) {
        return Math.sqrt(Math.pow(punkt1[0] - punkt2[0], 2) + Math.pow(punkt1[1] - punkt2[1], 2));
    }
}
 

shokwave

Mitglied
Hallo,

für mich sieht das in der Aufgabe, bei den Aufrufbeispielen, so aus als werden die Eingaben als Parameter übergeben. Du müsstest also "args" auswerten und nicht eine Eingabe über System.in.
 

Neue Themen


Oben