Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 05:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Problem Java

Discussion on Problem Java within the Java forum part of the Coders Den category.

Reply
 
Old   #1


 
schneider00's Avatar
 
elite*gold: 267
The Black Market: 401/0/0
Join Date: May 2010
Posts: 4,692
Received Thanks: 342
Problem Java

Hey,

ich soll etwas kleines in Java schreiben was als Ergebnis die eingegebene Zeit in Minuten, Stunden etc ausgeben soll.

Das alles steht auch soweit allerdings wird mir als Ergebnis immer 0 ausgegeben.
Kann mir jemand sagen wo der Fehler liegt?

main.java
Code:
import java.util.Scanner;


public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Zeit3 Z3;
		Z3 = new Zeit3();
		
		Scanner sc = new Scanner (System.in);
		System.out.print("Geben Sie die Zeit in Sekunden ein: ");
		Z3.setSec(sc.nextDouble());
	    
		Z3.showTime();
		
		
		
		
		
		
		
		
	}	
}


Zeit3.java
Code:
public class Zeit3 {

	public double sekunde;
	public double minute;
	public double stunde;
	public double tage;
	
	

	
	public void setSec(double sekunde){
		if(sekunde > 0) {
			System.out.println("Ihr eingegebener Wert lautet in Sekunden: "+sekunde);
		}
		else {
			System.out.println("Sie haben keinen korrekten Wert eingegeben.");
			System.out.println("Das Programm beendet sich nun.");
			System.exit(0);
		}
	}


	public void showTime() {
		System.out.println("Die Zeit in Minuten lautet: "+(sekunde / 60));
		
	}
	
	

	
	


}
Danke schonmal
schneider00 is offline  
Old 03/28/2015, 16:04   #2
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
Du änderst das Attribut sekunde nie, es gibt kein sekunde = ...; das Sekunde auf einen Wert ungleich 0 setzen würde. In setSec() machst du eine Ausgabe, aber das Attribut veränderst du nicht.
Die Formel Minuten = 60 * Sekunden überdenke lieber nochmal.
dowhile is offline  
Old 03/28/2015, 16:33   #3


 
schneider00's Avatar
 
elite*gold: 267
The Black Market: 401/0/0
Join Date: May 2010
Posts: 4,692
Received Thanks: 342
Okay und auf was soll ich sekunde setzen und wo?

Danke schonmal
schneider00 is offline  
Old 03/28/2015, 18:07   #4
 
Dantox's Avatar
 
elite*gold: 0
Join Date: Jan 2012
Posts: 228
Received Thanks: 45
Deine Methode showTime() kennt deine Variable "sekunde" zwar, da es eine public-Variable in deiner "Zeit3"-Klasse gibt. Sie weiß aber >nicht< den Wert vom Scanner, und denkt "sekunde" ist immer noch Null, da du sie nirgends initialisierst bzw. übergibst. Bei der Methode setSec() übergibst du nämlich aus deiner Main-Klasse einen Wert, der Methode showTime() aber nicht.

Achja, die Formel lautet sekunde / 60, nicht sekunde * 60.
Dantox is offline  
Old 03/28/2015, 18:29   #5


 
schneider00's Avatar
 
elite*gold: 267
The Black Market: 401/0/0
Join Date: May 2010
Posts: 4,692
Received Thanks: 342
OK. Hab das Problem gelöst.

Habe den Code in der main.java nun so geschrieben:

Code:
import java.util.Scanner;


public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Zeit3 Z3;
		Z3 = new Zeit3();
		
		Scanner sc = new Scanner (System.in);
		System.out.print("Geben Sie die Zeit in Sekunden ein: ");
		double sekundeE = sc.nextDouble();
		
		
		
		Z3.setSec(sekundeE);
	    
		Z3.showTime(sekundeE);
		
		
		
	}	
}
Habs einfach in ne Variable gespeichert und in die beiden setSec und showTime weitergegeben.
schneider00 is offline  
Old 03/28/2015, 18:34   #6
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
Dir ist nun aber bewusst, dass setSec() nur eine Ausgabe macht, also die Attribute von Z3 überhaupt nicht beeinflusst. showTime() würde ohne den Aufruf von setSec() davor genau gleich funktionieren.
Was du vermutlich möchtest: setSec() soll das Attribut sekunde auf den Wert setzen, den du setSec() übergibst, und showTime() soll dann eine Ausgabe basierend auf dem Wert vom Attribut sekunde machen. Das geht so:
Code:
public class Zeit {

  // das ist ein Attribut
  private double sekunden;

  // methode setSekunden erwartet einen Wert vom Typ int
  public void setSekunden(double pSekunden) {
    // jetzt gibt es zwei Variablen, sekunden und pSekunden
    // sekunden ist ein Attribut, und wir können in jeder Methode der Klasse auf sekunden zugreifen
    // pSekunden ist ein Parameter dieser Methode, und wir können nur in dieser Methode darauf zugreifen
    sekunden = pSekunden; // <-- jetzt bekommt das Attribut sekunden den Wert von pSekunden
  }

  public void showTime() {
    // hier nutzen wir sekunden, brauchen also keinen Parameter
    // vor dieser Methode muss setSekunden() aufgerufen werden, denn sonst ist das Attribut sekunden noch 0 (Standardwert für Attribute vom Typ int)
    int minuten = (int) (sekunden / 60); // das (int) davor schneidet die Kommastellen ab, so dass
    // minuten also zum Beispiel 5 statt 5.4813782 ist
    System.out.println("Minuten: " + minuten);
  }
}
Nutzen kannst du das wie gehabt:
Code:
public class Main {

  private static void main(String[] args) {
    Zeit zeit = new Zeit(); 
    Scanner scanner = new Scanner(System.in);
    double sekunden = scanner.nextDouble();

    zeit.setSekunden(sekunden); // wichtig, damit setzen wir also das Attribut der Klasse, das wir dann ...
    zeit.showTime(); // ... hier verwenden
  }
}
dowhile is offline  
Old 03/28/2015, 20:09   #7
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,184
Received Thanks: 1,317
Du könntest alternativ im Konstruktor der Klasse Zeit3 die Zeit übergeben.

Code:
public class Zeit3
{
double sekunde;

public Zeit3(double sekunde)
{
this.sekunde = sekunde;
}

public void print()
{
System.out.println(String.valueOf(sekunde));
}
}
Code:
Zeit3 Z3;	
Scanner sc = new Scanner (System.in);
System.out.print("Geben Sie die Zeit in Sekunden ein: ");
double sekundeE = sc.nextDouble();

Z3 = new Zeit3(sekundeE);
		
Z3.print();
Zunft is offline  
Old 03/29/2015, 22:23   #8
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,407
Received Thanks: 2,024
oder am besten die toString-Methode überschreiben.
NotEnoughForYou is offline  
Old 03/29/2015, 22:43   #9

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Arrow General Coding -> Java

#moved
snow is offline  
Reply


Similar Threads Similar Threads
Java Problem
10/01/2013 - Technical Support - 0 Replies
Moin, da ich diesen Bitminter testen möchte und es eine .jnlp Datei ist. Ich wollte ich diese Starten, aber dort kommt immer der Fehler, das der Dateityp nicht geöffnet werden kann. Ich habe nachgelesen und habe mir Java (erneut) runtergeladen, aber der Fehler kommt immernoch und wenn ich testen möchte, ob Java funktioniert steht dort immer ich soll Updaten. Ich weiß nun nicht was ich noch machen kann. Meine aktuelle Java Version soll laut Chrome 10.25.2.17 sein. Danke im vorraus ...
Java Problem!
06/30/2013 - Technical Support - 7 Replies
Hallöchen lieber Support (: Ich hab schon nach dieversen Informationen gegoogled, aber ich finde keine Lösung.. Ich habe vor ca 4 Wochen meinen Pc neu aufgesetzt. Hab natürlich auch Java installiert. Bei der Installation kam schon die Meldung: "Java cannot create Virtual Machine.. bla bla" Ich hab mir nichts bei gedacht, weil Minecraft etc trotzdem ging. Jetzt bin ich mal auf Seiten gewesen die Javaapplets beinhalten. Sobald ich diese öffne schließt sich mein Browser. Ich hab es...
recompile Problem (Block.java, item.java)
04/13/2013 - Minecraft - 1 Replies
Guten Morgen liebe Com (: Ich versuche etwas neues in Minecraft.. für mich einzubauen.. neuer Block + das Item dazu, des eingepflanzt werden muss.. wie bei einer Karotte oder einer Kartoffel. Ich zeige euch den Inhalt meiner BlockOnion.java package net.minecraft.src;
Java Problem
02/27/2011 - Minecraft - 5 Replies
Minecraft stürtzt nach ein paar Minuten immer wieder ab hier der ErrorLog # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x4ee1f1f5, pid=4048, tid=4196 # # JRE version: 6.0_24-b07 # Java VM: Java HotSpot(TM) Client VM (19.1-b02 mixed mode windows-x86 ) # Problematic frame:
Java Problem
01/13/2011 - Minecraft - 9 Replies
Hallo ich will mich mit nem server verbinden dann kommt dieses Problem: Connection Lost Internal Expextion: Java.io.UTDDataFormatException:malformed input around byte5



All times are GMT +2. The time now is 05:16.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.