Erkennen ob Zahl durch 500Teilbar ist

steffen1997

Mitglied
Hallo,

ich habe folgendes Problem,habe mir vor ner Zeit das Buch:"Sprechen sie Java?"
geholt,und versuche grad ein paar Übungsaufgaben zu lösen bin bei Kapitel2
und die Aufgaben sind meiner Meinung nach nicht einfach(für einen Javaeinstieger)

Folgende AUfgabe:Herr S.Tupid ist Kabelverleger.Am Ende jeder Woche muss er
eine Abrechnung durchführen.Dazu gibt er seiner Firma bekannt,wie viele Meter Kabel er
verlegt und wie viele Stunden er dafür benötigt hat.Die Firma errechnet daraus die
anfallenen Kosten wie folgt:Eine Kabeltrommel hat 500Meter Kabel und kostet 2 Eiro pro Meter.
Angefanggene Kabeltrommeln kosten 3 Euro pro Meter.Herr Tupid hat einen Stundensatz von 50 Euro
pro Stunde.Hat Herr Tupid ,ehr als 40 Stunden gearbeitet,so gebührt ihm für jede Überstunde der
doppelte Stundensatz.Schreiben sie ein Programm ,das eine Abrechnung durchführt und in übersichtlicher Form ausdruckt.

Mein Code funktioniert eig. recht gut,aber ich musste für den Ansatz ein ablaufdiagramm zeichen.
Wie auch immer meine Frage ist wie man eine Division durch 500bzw. andere Zahlen hinbekommt.

Hier mein Code:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class main {
	public static void main(String[] args) { 
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   int Stunden,Ueberstunden,Geld,Kabel,Kabeltrommel,Kosten,Abrechnung;
   Kabel=1;
   try {  
	      
	    
	      System.out.println("Abrechnung:");

	      System.out.print("Stunden gearbeitet: ");
	      Stunden = Integer.parseInt(reader.readLine());
          if(Stunden>40)
          {
        	  Ueberstunden=Stunden-40;
        	  Stunden=40;
        	  Geld=100*Ueberstunden+Stunden*50;
          }
          else
          {
        	Geld=Stunden*50;  
          }
	      System.out.print("Kabel verlegt: ");
	      Kabel = Integer.parseInt(reader.readLine());

	      if(Kabel==500)
	    	  {
	    	  Kabeltrommel=1;
	    	  Kosten=Kabel*2;
	    	  
	    	  }
	      else
	      {
	    	  Kosten=Kabel*3;
	      }
	      Abrechnung=Geld+Kosten;
	    	  
	      System.out.println("Die Kosten belaufen sich auf:"+Abrechnung+"Euro");
	    }
	    catch(NumberFormatException nfe) {
	      System.out.println("Fehler! Bitte nur Zahlen eingeben!");
	    }
	    catch(IOException ioe) {
	      System.out.println("Fehler beim Lesen von der Tastatur!");
	    }
}
}
 
Zuletzt bearbeitet:
B

bone2

Gast
modulo

Java:
if (x % 500 == 0) {
    syso(durch 500 teilbar)
}

division
Code:
x / y
super einfach
 
A

All4Me

Gast
Statt
Java:
if(Kabel==500)
              {
              Kabeltrommel=1;
              Kosten=Kabel*2;
              
              }
          else
          {
              Kosten=Kabel*3;
          }

ist besser
Java:
Kosten=(Kabel/500)*1000+(Kabel%500)*2;
 

steffen1997

Mitglied
Java:
 if (Kabel % 500 == 0) {
	    	    System.out.println("durch 500 teilbar");
	    	    Kosten=Kabel*2;
	    	}
	    	  
	      else
	      {
	    	  Kosten=Kabel*3;
	      }

ich habs jetzt so und es funktioniert ziemlich gut,
ALL4ME:Ist deine Lösung besser?Weil ich find die ist etwas kompliziert.
 
S

SlaterB

Gast
@All4Me
die 3 Euro pro Meter hast du nirgendwo berücksichtigt

> Eine Kabeltrommel hat 500Meter Kabel und kostet 2 Eiro pro Meter.
> Angefanggene Kabeltrommeln kosten 3 Euro pro Meter.

da kann man ganz schön unfaire Berechnung draus machen, muss man bei 499 Meter fast 1500 bezahlen
während die ganze Rolle für 1000 zu haben wäre?
bei sowas gehört doch wenigstens ein Schnitt mit rein: die letzte Rolle kostet bis zum 333. Meter je 3 Euro, Rest darüber umsonst ;)

------

@steffen1997
klappt es auch bei 1200 Meter?
 
H

hüteüberhüte

Gast
Java:
if (kabel < 500) {
    syso(kabel * 3)
} else {
    syso(kabel / 500 * 500 * 2);
    syso(kabel % 500 * 3);
}

So hätte ich das jetzt verstanden, aber ungetestet
 
Zuletzt bearbeitet von einem Moderator:
H

hüteüberhüte

Gast
Java:
    public static void main(String[] args) {
        int kabel = 1502;
        if (kabel < 500) {
            System.out.println(kabel * 3);
        } else {
            System.out.println(kabel / 500 * 500 * 2);
            System.out.println(kabel % 500 * 3);
        }
    }

Code:
3000
6

Funktioniert, und die Literale werden nicht zusammengefasst :D ;)

Wie findet ihr die Aufgabe als Einstieg?
Zur INfo:In dem Kapitel wo die Aufgabe drin ist wurden nur Variablen behandelt.

Das finde ich ein bisschen früh, wenn noch keine Operatoren (wie der Modulo-Operator) dran waren; aber Übung macht den Meister

Galileo Computing :: Java ist auch eine Insel - 2 Imperative Sprachkonzepte
 

steffen1997

Mitglied
So wie ich das sehe wird realtiv oft vorgegriffen,desweiten gibt es irgendwelche
In und out klassen die ich dann jedesmal zu Standardbibliothek umformen muss,
was mcih jetzt schon beim Anfang des 3.kapitels ziemlich nervt.
Deswegen suche ich eine Alternative sry falls diese Frage schon oft gestellt wurde,
ist Java ist eine Insel empfehlenswert?Oder/und Java von Kopf bis Fuß?
 
B

bone2

Gast
Die Insel ist eher ein Nachschlagewerk als ein Tutorial. Da kann man reingucken, wenn man zu nem bestimmten Thema ne Frage hat
 
A

All4Me

Gast
Sorry, ich hab mich da nur vertippt. Ich meinte

Java:
 Kosten=(Kabel/500)*1000+(Kabel%500)*3;

(Kabel/500)*1000 sind die 2€ pro Meter auf einer ganzen Rolle.
(Kabel%500)*3 sind 3€ pro Meter auf einer angebrochenen Rolle.
 
H

hüteüberhüte

Gast
ohne Modulo:
Code:
(kabel - kabel / 500 * 500) * 3

Variablennamen am besten immer klein, Klassennamen groß, final Variablen nur groß; und eclipse oder netbeans haben eine Formatierungs-Option
 

bERt0r

Top Contributor
Uiuiui was rechnet ihr denn hier aus:
1250 Meter Kabel verlegt:
mit "Kosten=(Kabel/500)*1000+(Kabel%500)*3"
Wäre das 1250/500*1000+(1250%500)*3
= 1250*2 + 250*3
2 Kabelrollen kommen aber nur auf 1000 Meter.

Es muss so heißen:
Angefangene Kabelmeter=Kabel%500
Kosten = (Kabel - Angefangene KM)*2 + Angefangene KM * 3

PS: @hüte x / 500 * 500 = x; x -x = 0; 0 * 3 = 0;
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
Uiuiui, dir ist aber schon klar, dass x / 500 etwas anderes als x / 500.0 ist? Daher ist x / 500 * 500 ganz sicher nicht x.
Ganz sicher doch...
Hab mir die Aufgabe nicht durchgelesen, ist ja auch sowieso schon gelöst. Aber ich nehme mal an, es sollte heißen:
Code:
x / (500 * 500)

[EDIT]Wenn ich´s mir Recht überlege... streicht meinen beitrag einfach mal :D. Unser Hütchen hat ja 15:13 schon gezeigt, dass es geht...
Man sollte Mathematik und Informatik nicht in einen Top werfen...[/EDIT]
 
Zuletzt bearbeitet:
S

Shaden

Gast
@HimBromBeere: peinlicher comment. x ist ein int, 500 ebenso => Integer Division
und x / (500 * 500) ist sowieso ganz was anderes und ergibt niemals x.
 

AquaBall

Top Contributor
Lustig, wie lange man sich damit rumschlagen kann.

Aber auch das ist falsch:
Uiuiui was rechnet ihr denn hier aus:
1250 Meter Kabel verlegt:
mit "Kosten=(Kabel/500)*1000+(Kabel%500)*3"
Wäre das 1250/500*1000+(1250%500)*3
= 1250*2 + 250*3
2 Kabelrollen kommen aber nur auf 1000 Meter.

Es muss so heißen:
Angefangene Kabelmeter=Kabel%500
Kosten = (Kabel - Angefangene KM)*2 + Angefangene KM * 3

Die eleganteste (und korrekte) Variante ist sicher
Code:
Kosten=(Kabel/500)*1000+(Kabel%500)*3
Da ist halt viel versteckt: 1000=500*2; (Kabel/500)=(int)(Kabel/500)
bedeutet also:
Code:
Kosten=((int) (Kabel/500))*500*2+(Kabel%500)*3
(Schaut schon etwas weniger elegant aus.)

Das ganze Dilemma kommt nur weil Aufgabenstellung und Variablen-deklaration einen besch@§& Konstallation ergeben.

Kleine Änderung:
1) Kabel kann auch nach halben Metern abgerechent werden.
2) der Meterpreis ist nicht ganzzahlig, sondern z.B. 2.10 und 3.35
Dann MUSS es so geschrieben werden:
(double Kabel...)
Code:
Kosten=((int) (Kabel/500))*500*2.10+(Kabel%500)*3.35
und schon wird es etwas klarer.

(Ist auch ungünstig einen Anfänger mit so versteckten Nebeneffekten zu verwirren, ohne es ihm klar zu machen. Später muss er das eh können.)
 

AquaBall

Top Contributor
[OT]
da kann man ganz schön unfaire Berechnung draus machen, muss man bei 499 Meter fast 1500 bezahlen
während die ganze Rolle für 1000 zu haben wäre?

So ist es aber allgemein üblich in der Praxis.
(Jeder Schnitt würde das Problem nur staffeln)

Aber kauf mal bei @onrad 1 Widerstand (0,11€), oder eine 100-Rolle (0,07€).
Wenn du vernünftige Beratung hast, dann machen die dich darauf aufmerksam.

Bei meinem lokal Dealer war das Verhältnis (vor Jahren) so extrem, dass 15 EinzelStück das selbe kosteten wie 100 an der Rolle.

Letztlich hab ich dann später doch nur mehr Einzelstück gekauft, weil sich bei mir Rollen von selten benutzten Werten gestapelt haben. Davon hab ich ihm viel zurückgegeben, und wir haben einen SpezialNachlass von 50% auf Einzelstücke vereinbart.
Ich hab's als Sponsoring für gute Beratung gesehen.[/OT]
 

bERt0r

Top Contributor
(Ist auch ungünstig einen Anfänger mit so versteckten Nebeneffekten zu verwirren, ohne es ihm klar zu machen. Später muss er das eh können.)
Darum sollte man es gleich so machen, wie es Mathematisch richtig ist anstatt seine Rechnung nicht auf sprachspezifische "versteckte Nebeneffekte" zu stützen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
M ziffer in zahl erkennen mit boolean Java Basics - Anfänger-Themen 12
D Zahl erkennen Java Basics - Anfänger-Themen 4
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
B Zusammenhängende Blöcke bei x-gewinnt erkennen? Java Basics - Anfänger-Themen 14
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
1 Wie dieses Muster am einfachsten erkennen? Java Basics - Anfänger-Themen 32
Yasemin bahar Muster erkennen Java Basics - Anfänger-Themen 13
U Muster in einem Array erkennen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N palindrom erkennen Java Basics - Anfänger-Themen 3
A Figur erkennen, aber Abweichung falsch Java Basics - Anfänger-Themen 2
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
P Eigenschaft eines imperativen Algo (Pseudocode) sofort erkennen Java Basics - Anfänger-Themen 1
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
S Java Großbuchstabe erkennen Java Basics - Anfänger-Themen 5
D Wenn ich repaint(); mache, flackert es so stark, das man fast nichts erkennen kann. Java Basics - Anfänger-Themen 11
B Unterschiede in einer Liste erkennen Java Basics - Anfänger-Themen 1
O String: Befehl und Wert erkennen. Java Basics - Anfänger-Themen 4
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
M Input/Output Zeilenumbrüche erkennen und beibehalten Java Basics - Anfänger-Themen 4
X XML-Eintrag an Attribute erkennen Java Basics - Anfänger-Themen 2
N Erkennen ob Linkshänder Maus Java Basics - Anfänger-Themen 4
L In Javakara Palindrom erkennen. Java Basics - Anfänger-Themen 9
B Tastatureingabe erkennen Java Basics - Anfänger-Themen 8
F Blinken oder Dauer ein erkennen Java Basics - Anfänger-Themen 6
F Linien und Kurven erkennen Java Basics - Anfänger-Themen 2
T Richtigen Wert erkennen Java Basics - Anfänger-Themen 9
D Klassenmethode: Befehl erkennen, dann int zurückgeben Java Basics - Anfänger-Themen 2
S Laufzeitfehler erkennen Java Basics - Anfänger-Themen 3
T Erste Schritte Methoden anwenden und erkennen Java Basics - Anfänger-Themen 5
D Erste Schritte Array erkennen Java Basics - Anfänger-Themen 4
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
F Attribute von Feldinhalten erkennen Java Basics - Anfänger-Themen 6
N Erste Schritte Doppelwerte erkennen Java Basics - Anfänger-Themen 5
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
T Erste Schritte Leerzeile in JAVA erkennen /übergehen Java Basics - Anfänger-Themen 9
Java-Insel StringBuilder Zeilenumbrüche erkennen Java Basics - Anfänger-Themen 3
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
X String Sonderzeichen/Zahlen erkennen Java Basics - Anfänger-Themen 3
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
M Betriebssystem erkennen? Java Basics - Anfänger-Themen 12
lumo Collections Array - erkennen von positionsänderungen Java Basics - Anfänger-Themen 5
M Muster erkennen. Idee: Fassade. Java Basics - Anfänger-Themen 3
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
Kukulkan Java-Version (ME, SE) erkennen und darauf reagieren? Java Basics - Anfänger-Themen 35
E Position erkennen und überlappungen feststellen Java Basics - Anfänger-Themen 4
3 Leerzeichen erkennen Java Basics - Anfänger-Themen 3
A Gruppen von Namen erkennen Java Basics - Anfänger-Themen 21
M In Router einloggen und PCs im Netzwerk erkennen Java Basics - Anfänger-Themen 18
T Image Position erkennen Java Basics - Anfänger-Themen 6
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
S Filelock erkennen Java Basics - Anfänger-Themen 6
A Angeschlossenes Gerät am Com Port erkennen Java Basics - Anfänger-Themen 4
L Zeilenwechselsequenz erkennen aus der Datei heraus Java Basics - Anfänger-Themen 2
S Erkennen der Eingabe Java Basics - Anfänger-Themen 13
G eine straße im kartenspiel erkennen (algorithmus) Java Basics - Anfänger-Themen 4
G Bildinformationan auslesen - OCR - Zahlen erkennen Java Basics - Anfänger-Themen 10
B Properties erkennen, auslesen Java Basics - Anfänger-Themen 7
M in Textfile Strukturen erkennen Java Basics - Anfänger-Themen 5
kulturfenster Teilstring erkennen Java Basics - Anfänger-Themen 5
L Laufwerksauswahl / Laufwerke erkennen Java Basics - Anfänger-Themen 3
B Threadende erkennen Java Basics - Anfänger-Themen 6
E Klassen erkennen in einer Aufgabenstellung Java Basics - Anfänger-Themen 6
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
H Zeilenanzahl eines Strings erkennen Java Basics - Anfänger-Themen 2
S Umlaute und Sonderzeichen erkennen Java Basics - Anfänger-Themen 12
C Erkennen einer gedrückten Taste Java Basics - Anfänger-Themen 6
S CD/DVD-Laufwerke erkennen mit Java Java Basics - Anfänger-Themen 3
R erkennen von Wortende Java Basics - Anfänger-Themen 5
N Veränderungen in JTextArea erkennen Java Basics - Anfänger-Themen 5
K Wortpaare in Texten erkennen Java Basics - Anfänger-Themen 8
C Japanische Zeichen erkennen Java Basics - Anfänger-Themen 5
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
B Überprüfung dass Zahl nur aus 0,1 besteht Java Basics - Anfänger-Themen 2
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
M zahl raten Java Basics - Anfänger-Themen 1
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben