Umrechnung

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 Umrechnung

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class Umrechnung {

public  static int [] umrechen( int sekunden){
int [] a = new int [3];
a[0]=sekunden/3600;
a[1]=(sekunden%3600)/60;
a[2]=((sekunden%3600)%60);
return a;
}

ich weiß nicht wie man eine main methode erstellt unglücklich
b)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public class Umrechung2 {
private int sekunden;

public Umrechung(int sekunden)  {
this.sekunden= sekunden;
}
public umrechung()  {
int x= sekunden/3600;
int y= (sekunden%3600)/60;
int z=((sekunden%3600)%60);
return x*h+y*min+z*sec;
 }
}

b) wäre hier die einführung von string sinnvoll?
 
Auf diesen Beitrag antworten »
neuling96

hatte die datei vergessen
Auf diesen Beitrag antworten »
eulerscheZahl

Bei a) ist die Klasse selbst auch static.
Bei b) hat der Konstruktor den falschen Namen und umrechnung() gibt etwas zurück, ohne einen Rückgabetyp zu definieren. Außerdem existieren h, min und sec nicht.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public static void main(String[]args)
{
	System.out.print("Anzahl von Sekunden eingeben: ");
	Scanner scanner = new Scanner(System.in);
	int sekunden = scanner.nextInt();
	int[] zeit = Umrechnung.umrechnen(sekunden);
	System.out.print(sekunden + " Sekunden ergeben ");
	System.out.print(zeit[0] > 1 ? zeit[0] + " Stunden " : (zeit[0] == 1 ? " 1 Stunde " : ""));
	System.out.print(zeit[1] > 1 ? zeit[1] + " Minuten " : (zeit[1] == 1 ? " 1 Minute " : ""));
	System.out.print(zeit[2] > 1 ? zeit[2] + " Sekunden " : (zeit[2] == 1 ? " 1 Sekunde " : ""));
}


code:
1:
2:
3:
4:
5:
public static class Umrechnung { //static ergänzt
	public static int[] umrechnen(int sekunden) {
		return new int[] { sekunden/3600, (sekunden%3600)/60, sekunden%60 };
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
public class Umrechnung2 {
	private int sekunden;
	private int minuten;
	private int stunden;
	
	public Umrechnung2(int sekunden) {
		this.stunden = sekunden / 3600;
		this.minuten = (sekunden % 3600) / 60;
		this.sekunden = sekunden % 60;
	}
	
	@Override
	public String toString() {
		return "...";
	}
}
Auf diesen Beitrag antworten »
neuling96

public class Umrechung2 {
private int sekunden;

public Umrechung2(int sekunden) {
this.sekunden= sekunden;
}
public void umrechung() {
int x=0;
int y=0;
int z=0;
x= sekunden/3600;
y= (sekunden%3600)/60;
z=((sekunden%3600)%60);
return x*h+y*min+z*sec;
}
}
im return bereich habe ja ein mix aus int und char return x*h+y*min+z*sec

deshalb
void
da der Typ der Daten nicht angegeben ist

ist damit alles richtig gelöst?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Wo ist da ein char? Und nein, nichts ist gelöst, der Code kompiliert nicht mal. Wenn eine Funktion void ist, darfst du kein return mit einem Argument verwenden.
Auf diesen Beitrag antworten »
neuling96

public class Umrechung2 {
private int sekunden;

public Umrechung2(int sekunden) {
this.sekunden= sekunden;
}
public umrechung() {

int x= sekunden/3600;
int y= (sekunden%3600)/60;
int z=((sekunden%3600)%60);
}

}

ich möchte jetzt x*h+y*min+z*sec haben

d.h ich muss ein public string methode erstellen?
Auf diesen Beitrag antworten »
eulerscheZahl

Ach, du willst einen String zurückgeben?

Dann solltest du das Java (und mir) durch implizite oder explizite Typumwandlung klarmachen.

code:
1:
2:
3:
4:
public String umrechnung(int sekunden) {
    //...
    return x + " Stunden " + y + " Minuten" + z + " Sekunden";
}
Auf diesen Beitrag antworten »
neuling96

public String umrechnung(int sekunden) {
int x= sekunden/3600;
int y= (sekunden%3600)/60;
int z=((sekunden%3600)%60);
x= (string) x;
y=(string) y;
z= (string) z;

return x + " Stunden " + y + " Minuten" + z + " Sekunden";
}

ich hoffe ich die typumwandlung richtig gemacht
Auf diesen Beitrag antworten »
neuling96

wenn ich im cmd
javac Umrechnung2.java
eingebe, erhalte ich das die datei nicht gefunden würde (ich hab dein code benutz)
Auf diesen Beitrag antworten »
eulerscheZahl

Nein.
Mit int x legst du fest, dass x ein int ist und es auch immer sein wird. x= (string) x; geht also nicht. Im übrigen wird String groß geschrieben.

Bei return x + " Stunden " + y + " Minuten" + z + " Sekunden"; wird eine implizite Typumwandlung durchgeführt: int + String = String. Explizit geht das mit String.valueOf(int).

Warum nicht einfach so:
code:
1:
2:
3:
4:
5:
6:
public String umrechnung(int sekunden) {
    int x= sekunden/3600;
    int y= (sekunden%3600)/60;
    int z=sekunden%60;
    return x + " Stunden " + y + " Minuten " + z + " Sekunden";
}
Auf diesen Beitrag antworten »
neuling96

public String umrechnung(int sekunden)


wann darf im rumpf nichts stehen?
public String umrechnung()
Auf diesen Beitrag antworten »
eulerscheZahl

Ich verstehe die Frage nicht.
Und zum Teil mit cmd: Screenshot von Terminal und Explorer wären hilfreich.
Auf diesen Beitrag antworten »
neuling96

ob das auch ginge
code:
1:
2:
3:
4:
5:
6:
7:
8:
public String umrechnung() {
    int x= sekunden/3600;
    int y= (sekunden%3600)/60;
    int z=sekunden%60;
    return x + " Stunden " + y + " Minuten " + z + " Sekunden";
}

Auf diesen Beitrag antworten »
eulerscheZahl

Das ist nicht der Rumpf
code:
1:
2:
3:
modifier(public/private/protected/static/...) Rückgabetyp(int/double/String/void/...) Funktionsname (Argumententyp(int/double/...) Argumentname) {
    Rumpf
}

wenn du die Variable sekunden verwenden willst, müssen die irgendwo definiert sein. Das hast du im Konstruktor erledigt, es geht also. Ist aber nicht das, was du tun sollst. (siehe meinen Beitrag von 8:05 Uhr).

Wenn du jetzt in cmd "dir" eingibst, wird die Datei Umrechnung2.java dort nicht zu finden sein, habe ich Recht? Du musst in den passenden Ordner wechseln.
Auf diesen Beitrag antworten »
neuling96

das macht nicht das gleiche
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
public class Umrechnung2 {
	private int sekunden;
	private int minuten;
	private int stunden;
	
	public Umrechnung2(int sekunden) {
		this.stunden = sekunden / 3600;
		this.minuten = (sekunden % 3600) / 60;
		this.sekunden = sekunden % 60;
	}
	
	@Override
	public String toString() {
		return "...";
	}
}

wie das?
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public class Umrechnung2 {
    private int sekunden;

public Umrechung(int sekunden)  {
this.sekunden= sekunden;
}

 public String umrechnung() {
    int x= sekunden/3600;
    int y= (sekunden%3600)/60;
    int z=sekunden%60;
    return x + " Stunden " + y + " Minuten " + z + " Sekunden";
}


ja hattest recht
Auf diesen Beitrag antworten »
eulerscheZahl

Es unterscheidet sich im objektorientierten Ansatz. Ich habe Klassenvariablen mit Stunden, MInuten und Sekunden, sodass man (bei Implementierung von gettern) auf die einzelnen Variablen zugreifen kann.
Auf diesen Beitrag antworten »
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public static class Umrechnung { 
	public static int[] umrechnen(int sekunden) {
		return new int[] { sekunden/3600, (sekunden%3600)/60, sekunden%60 };
	}
public static void main(String[]args)
{
	System.out.print("Anzahl von Sekunden eingeben: ");
	Scanner scanner = new Scanner(System.in);
	int sekunden = scanner.nextInt();
	int[] zeit = Umrechnung.umrechnen(sekunden);
	System.out.print(sekunden + " Sekunden ergeben ");
	System.out.print(zeit[0] > 1 ? zeit[0] + " Stunden " : (zeit[0] == 1 ? " 1 Stunde " : ""));
	System.out.print(zeit[1] > 1 ? zeit[1] + " Minuten " : (zeit[1] == 1 ? " 1 Minute " : ""));
	System.out.print(zeit[2] > 1 ? zeit[2] + " Sekunden " : (zeit[2] == 1 ? " 1 Sekunde " : ""));
}

}


Auf diesen Beitrag antworten »
eulerscheZahl

Mein Fehler, static hat bei der Klasse eine andere Bedeutung als ich dachte (es gibt eben doch ein paar Unterschiede zwischen Java und C#).
public class Umrechnung {
für den Scanner fehlt dir das passende import. Es ist java.util.Scanner
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »