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!


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));
}
}