check a code

Status
Für weitere Antworten geschlossen.

rfinal

Neuling
Thread Starter
Mitglied seit
30.08.2009
Beiträge
504
Hi ich würde gerne spätestens morgen einen java code reinstellen und beurteilen/ überprüfen lassen.
Gerne auch über pn wenn jemand ahnung hatt.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
und wieso postest du das jetzt schon?
ohne jeglichen inhalt?
 
Das hat ja fast schon Troll-Niveau :d

Wie wär's, wenn du das nächste mal einfach wartest, bis du den Code auch hast, und ihn dann gleich rüberwachsen lässt? Aber an sich spricht ja nichts dagegen, mal über den Code drüber zu schauen, gerne auch per PN ;)
 
y its for se trolling und so
von class bis penny und werteausgeben sind vorgegeben

class Nr4{
public static void main(String[] args) {
// Einlesen des Dollar-Gesamtbetrages
double dollar = 28,98;
int buck; // Anzahl 1-Dollar-Muenzen
int half; // Anzahl 50-Cent-Muenzen
int quarter; // Anzahl 25-Cent-Muenzen
int dime; // Anzahl 10-Cent-Muenzen
int nickel; // Anzahl 5-Cent-Muenzen
int penny; // Anzahl 1-Cent-Muenzen
buck = 0;
half = 0;
quarter = 0;
dime = 0 ;
nickel = 0 ;
penny = 0 ;
if (dollar>=1) {
buck =(int)(dollar/1);
dollar = dollar % 1;
}
if (dollar>=0.5) {
half =(int)(dollar/0.5);
dollar = dollar % 0.5;
}
if (dollar>=0.25) {
quarter =(int)(dollar/0.25);
dollar = dollar % 0.25;
}
if (dollar>=0.10) {
dime =(int)(dollar/0.10);
dollar = dollar % 0.10;
}
if (dollar>=0.05) {
nickel =(int)(dollar/0.05);
dollar = dollar % 0.05;
}
if (dollar>=0.01) {
nickel =(int)(dollar/0.01);
dollar = dollar %0.01;
}

// Werte ausgeben
System.out.println(buck + " x 1 Dollar");
System.out.println(half + " x 50 Cent");
System.out.println(quarter + " x 25 Cent");
System.out.println(dime + " x 10 Cent");
System.out.println(nickel + " x 5 Cent");
System.out.println(penny + " x 1 Cent");
}

Btw darf auch keine schleife und case sein.
 
Zuletzt bearbeitet:
Und jetzt ?
Entweder funktioniert dein Code oder nicht, das wirst du ja wohl schon selbst probiert haben. Oder sollen wir für dich die Hausaufgaben machen ?
Was ist deine Frage ?

Ich würde das ganze mit einem Array lösen und per Schleife durchgehen, wäre etwa 1/4 Code weniger.
Aber da du ja sagst dass keine Schleifen verwendet werden dürfen....... also hat sich der Verbesserungsvorschlag schon erledigt.
 
Zuletzt bearbeitet:
// Einlesen des Dollar-Gesamtbetrages
double dollar = 28,98;

ist ja wohl mal kein einlesen ;)

Was sind deine fragen?
Was ist die genaue Aufgabenstellung?

Und ich würde dich bitten keinen Beitrag 2 Tage vor deinem Post mehr zu erstellen!
Danke!


€: hast du gerade irgend was technisches begonnen? deine letzten Posts hatten alle was mit Programmieren zu tun bzw mit einer Präsentation und mit Linux ;) sieht fast wie ein Hausaufgaben zusammenbasteln aus ;)
 
Zuletzt bearbeitet:
Habe ich mir auch gerade gedacht, sieht schwer nach Übungsaufgaben für Vorlesung oder so aus...

Wie pointX schon gesagt hat, mit einen Array und ner Schleife natürlich schöner und vor allem weniger, da das aber von vornherein ausgeschlossen war, sehe ich jetzt nicht, was wir dir zu dem Code noch großartig sagen könnten.
 
@ moep.at
sollte auch nichts einlesen das passt soweit die Aufgaben sollten wir in Gruppen bearbeiten.

Sind soweit fertig.Mein Teil war eine andere aufgabe wollte diese aber auch lösen das Problem ist das ich den richtigen wert für Buck bekommen aber die anderen Werte bleiben 0.
 
Dann wäre es auch gut die Lösung zu posten. Vllt. hat mal jmd. ein ähnliches Problem und kommt hier über Google her.
Derjenige würde sich dann über eine Lösung freuen, aber ein reines "Fehler gefunden" bringt uns alle nicht weiter.
 
War soweit alles richtig nur muss es ein . statt nem , bei 29,98 sein : )
 
Und jetzt ?
Entweder funktioniert dein Code oder nicht, das wirst du ja wohl schon selbst probiert haben. Oder sollen wir für dich die Hausaufgaben machen ?
Was ist deine Frage ?

Ich würde das ganze mit einem Array lösen und per Schleife durchgehen, wäre etwa 1/4 Code weniger.
Aber da du ja sagst dass keine Schleifen verwendet werden dürfen....... also hat sich der Verbesserungsvorschlag schon erledigt.

Also ich würde es ja so machen:

Code:
package de.hardwareluxx.trollolo;

import de.hardwareluxx.trollolo.visitor.CountVisitor;
import de.hardwareluxx.trollolo.visitor.Unit;

public class Trollolo
{
    public static void main( String[] args )
    {
        Unit.BUCK.accept(new CountVisitor(28.98));
    }
}

Code:
package de.hardwareluxx.trollolo.visitor;

public enum Unit {

    BUCK(1) , HALF (0.5), QUARTER (0.25), DIME(0.1), NICKEL(0.05), PENNY(0.01);

    private double divisor;

    Unit(double divisor){
        this.divisor = divisor;
    }
    public double getDivisor() {
        return divisor;
    }

    public Unit next() {
        try{
            return Unit.values()[this.ordinal()+1];
        }catch(Exception e){
            return null;
        }
    }
    public void accept(CountVisitor visitor) {
        visitor.visit(this);
    }
}
Code:
package de.hardwareluxx.trollolo.visitor;

public class CountVisitor {

    private double dollar;

    public CountVisitor(double dollar){
        this.dollar = dollar;
    }

    public void visit(Unit unit) {
        int count = (int) (dollar / unit.getDivisor());
        dollar %=  unit.getDivisor();
        System.out.println(count + " x " + unit.toString());
        if (unit.next() == null) {
            return;
        }
        unit.next().accept(this);
    }
}

Keine explizite Schleifen. Dafür 1000 Zeilen Code mehr ;).
 
hi next code brauche start hilfe Prog soll folgendes ausgeben:
dd.mm.yyyy und zwar korrekt also es soll kein 40.12.1900 möglich sein usw. + soll nur das ausgeben was ein Schaltjahr ist yyyy durch 4 teilbar, nicht aber durch 100 als Ausnahme aber durch 400.

---------- Post added at 22:49 ---------- Previous post was at 21:02 ----------

Hab was gefunden was fast perfekt ist
import java.util.GregorianCalendar;

public class Datum {

public static void main(String[] args) {

GregorianCalendar gc = new GregorianCalendar(1490,13,23); //eingagabe in yyyy,monat,tag

gc.setLenient(false); //falsch ausgabe

try {
gc.get(GregorianCalendar.YEAR);
gc.get(GregorianCalendar.MONTH);
gc.get(GregorianCalendar.DAY_OF_MONTH);
System.out.println(" Datum existiert ");
} catch (IllegalArgumentException e) {
System.out.println(" Datum existiert nicht "); //falsch ausgabe

}
}
}

Das Problem darf weder was importieren noch Gregorian Calender benutzen .............
 
Schon allein weil du keine Codeblöcke benutzt, sollte man dir nicht helfen. :fresse:
 
Um die Aufgabenstellung mal zu präzisieren:

Du sollst ein Programm erstellen, welches ein eingegebenes Datum auf Gültigkeit überprüft und wieder ausgibt, wenn es ein Schaltjahr ist?
 
Genau den Teil mit dem Schaltjahr hab ich fertig nun muss ich nur noch das Datum überprüfen.
Das Problem dabei ist ich darf dafür nur simple befehle benutzen if.else schleifen case usw.
Gregorian Calender als auch weiter import typen,klassen darf ich nicht benutzen.
 
Und wo liegt das Problem. Du vergleichst einfach Integer mit if, ob sie gültig sind.

Code:
if(day > 0 && day <= 31)
{
    // korrektes Datum
}

Und das musst du jetzt halt für unterschiedliche Monate angepasst machen, da nicht jeder Monat 31 Tage hat.
 
Zuletzt bearbeitet:
ok aber wie mach ich noch den Vergleich mit dem Monat ?
Sprich das ich noch die Monate 1,2,3 usw mit einbringe ?
 
Da der Monat wird ja auch eingelesen von deinem Programm. Ich werde jetzt nicht lang rumraten, was drin Programm soll, da du praktisch nichts davon gesagt hast.
Du lässt den Benutzer ein Datum eingeben. Schreibst den Wert in Drei Variablen. Tag, Monat, Jahr. Prüfst ob das Jahr ein gültiges ist, prüfst ob der Monat ein gültiger ist und anhand der Variable, in der der Monat stehst, prüfst du via switch-case ob der Tag für diesen Monat ein gültiger ist. Und dann bist du auch schon fertig.
 
ok try hard :)
Danke erstmal :hail:

---------- Post added at 16:36 ---------- Previous post was at 16:16 ----------
switch (Monat) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
Tage = 31;
break;
case 4:
case 6:
case 9:
case 11:
Tage = 30;
break;
case 2:
Tage = 28;
break;
}
Hab mir jetzt das hier gebastelt aber weder die ausgabe noch überprüfung klappt
 
Zuletzt bearbeitet:
Zum letzten Mal ... bitte benutz Code-Tags, wenn du Programmcode schreibst. Das machst du, indem du [code*] und [/code*] (ohne die Sterne) um den Programmcode schreibst.

Und wo ist die Überprüfung?
 
ok werds mir versuchen zu merken ;)
Ja da komm ich nicht drauf wie ich die Überprüfung machen soll.
 
Mit if-Abfragen.
So wie ich es jetzt habe sind das nur 3 if-Abfragen und eine Switch-Case. Das müsstest du doch hinbekommen. Wenn nicht, soltlest du dir weiter etwas gedanken machen oder eine Nacht drüber schlafen. Und mal eine Tutorial zur hand nehmen, denn das ist wirklich einfach.

Zum Beispiel, ohne dir deine Hausaufgaben machen zu wollen, wenn du vom Benutzer willst, dass er eine Zahl zwischen 400 und 500 eingibt und alle anderen Zahlen sind nicht erlaubt, machst du:
Code:
if(eingegebeneZahl < 400 || eingegebeneZahl > 500)
{
    // nicht erlaubte zahl, fehler
}

http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Condition.htm
 
Zuletzt bearbeitet:
Brauch ich dann für die Tage 2 verschiedene Variablen sonst werden die Tage Automatisch nach dem case fall auf z.B. 31 gesetzt auch wenn vorher 19 eingetragen wurde.
 
Ja, du brauchst eine Variable für die Tage, die der Benutzer eingegeben hat und eine, in die du die maximal gültigen Tage reinschreibst. Die zwei vergleichst du dann, ob die vom Benutzer eingegebenen Tage über das Limit hinausgehen.
 
ok dank dir prog läuft jetzt :)

---------- Post added at 20:14 ---------- Previous post was at 19:15 ----------

Code:
public class Datum2 {
  
    public static void main (String[] args) {
       
        
       int Jahr = 1425;
       int Tage = 0;
       int Monat = 12;
       int Tag   = 10;
       switch (Monat) {
           case 1:
           case 3:
           case 5:
           case 7:
           case 8:
           case 10:
           case 12:
               Tage = 31;
               break;
           case 4:
           case 6:
           case 9:
           case 11:
               Tage = 30;
               break;
           case 2:
               Tage = 28;
               break;
       }
       if(Tag > Tage){
           System.out.println("fehler");}
       else { 
           if(Jahr <= 1583) {
           System.out.println("Das ist viel zu frühhhh");}
       
       else {
            System.out.println("Datum" +Tag+"."+Monat+"."+Jahr);
        }
           

       if (Jahr % 4==0 && Jahr%100!=0){
           System.out.println ("Schaltjahr");}
           else {
       if (Jahr % 400==0){
       }
          System.out.println ("Schaltjahr");}
       }
       }   
       }
Komm nicht weiter das Problem das
1.Die Rechung nicht mehr stimmt
2.Wenn ich ein jahr <1583 eingeben will soll eine ausgabe komme z.B. zu Früh
wenn es over 1583 ist soll geprüft werden ob datum ok ist und ob es ein schaltjahr ist.
Es ist ein schalt jahr wenn jahr%4= 0 aber nicht wenn jahr% 100 =0 ist ausnahmr ist wenn es jahr % 400 ist dann ist es wieder ein schaltjahr.
 
Zuletzt bearbeitet:
Ich würde die Prüfung, ob es ein gültiges Jahr bzw. Schaltjahr ist, als erstes machen.

Ist es kein gültiges Jahr oder Schaltjahr, dann ist die Restliche Betrachtung der Tage im Monat überflüssig.

Zudem fehlt bei Dir im Februar die Überprüfung des 29 Tages.
 
ok konnte Le Programm wie gewünscht lösen.
Hab hier ein neues problem und zwar soll ich ein Programm schreiben das Binärzahlen in Dezimal und Hexadezimal ausgibt.
Binärzahlen werden immer in 32 bit dargestellt wobei das erste bit das Vorzeichen repräsentiert (zweierkomplementerdarstellung)
Hatt mir so etwas überlegt
Code:
 class Binaer2Dezimal2Hexa {
      public static void main(String[] args) {
             String binaer = args[0];
             long dezimal = Long.parseLong(binaer,2);
             String hexadezimal = Long.toHexString(dezimal);
 
             System.out.println("Binär: " + binaer);
             System.out.println("Dezimal: " + dezimal);
             System.out.println("Hexadezimal: " + hexadezimal);
                                              }
}

Wobei ich weder String noch tohex verwenden darf ;(
Wobei ich für hexadezial sowas machen könnte
Code:
do {
     hexazahl = zahl%16 + hexazahl;
        if ((zahl%16)==10) { hexazahl = "A" ; }
        if ((zahl%16)==11) { hexazahl = "B" ; }
        if ((zahl%16)==12) { hexazahl = "C" ; }
        if ((zahl%16)==13) { hexazahl = "D" ; }
        if ((zahl%16)==14) { hexazahl = "E" ; }
        if ((zahl%16)==15) { hexazahl = "F" ; }
      zahl = zahl/16;
  } while (zahl > 0);
Aber wie mach ich möglich einfach die Binärr "eingabe maske" dachte an sowas
Code:
101 binär ==> 1*2^2 + 0*2^1 + 1*2^0
 
Die dezimal Zahl immer fleißig durch 2 dividieren bzw den Rest berechnen. So richtig schön nach Lehrbuch so wie man es als Mensch ohne Hilfsmittel auf dem Papier machen würde. Bei negativen Zahlen gibt es noch eine kleine Besonderheit aber auch das ist vom umrechnen im Kopf bekannt.

Direkt am Anfang solltest du noch prüfen ob die Zahl überhaupt im Wertebereich liegt. Wenn du das nicht machst, hat das ganz lustige Effekte. Nehmen wir mal eine 4 stellige Binärzahl mit Vorzeichen und als Zahl irgendwas zwischen 8 und 15. Lässt sich erstmal ohne Fehler umwandelt aber hat am Ende eine 1 im Vorzeichenbit. Keine Fehlermeldungen und trotzdem ein komplett falsches Ergebnis.

---------- Post added at 14:39 ---------- Previous post was at 14:33 ----------

Sehe gerade du willst von Binär nach Dezimal. Gleiche Spiel in Grün. Rechne einfach mal 010011001 auf dem Papier mit Rechenweg um. Genau das gleiche Spiel machst du dann im Quellcode. Kleine Besonderheit wieder bei negativen Zahlen steht aber wie gesagt im Lehrbuch. Kannst du zum Beispiel hier nachlesen: Zweierkomplement
 
Status
Für weitere Antworten geschlossen.
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh