Java und ein GoTo Befehl

tag zusammen
ich versuche im moment ein Java programm zu programmierne das vom grundgerüst (natürlich nicht von den Befehlen) auf einem vb 08 Programm basiert (ich schreibe es um in Java).

Bei vb konnte ich geschcikt ohne gings nicht einen goto befehl einfügen nun versuch ich so was ähnliches in JAva nur das ich bei Google nicht darüber gefunden habe was mein goto ersetzen kann. DEr goto befehl kommt im vb programm als hilfe zum einsatz weil dort keine if entscheidung helfen kann die zahlen zu sortieren. ich habe es bei einen select case hinzugefügt. Hab ihm anhang diesen teil eingefügt mit dem Goto und selct case:

Select case (inthelp)'Entsprcht der hilfsvariablen zur Pausendauer
Case 10
Goto 123 'Die Berechnung für diese Werte

Case 20
Goto 123

Case 30
Goto 123

Case 40
GoTo 456

Case 50
GoTo 456

Case 60
GoTo 456

Case >60
GoTo 456
end select

if intmin

Ich behaupte einfach, dass man auch ohne GOTO jedes Verhalten programmieren kann. :wink:

Wie GOTO in VB8 funktioniert, weiß ich nicht. Vielleicht willst Du ja so etwas:

 switch(inthelp) {
 case 10:
 case 20:
 case 30:
 rechneWas();
 break;
 case 40:
 case 50:
 case 60:
 default:
 rechneWasAnderes();
 break;
 }

Ansonsten gib nochmal einen ordentlich formatierten Quelltext hier rein, vielleicht meldet sich dann jemand: http://www.wer-weiss-was.de/app/faqs/classic?entries…

Hallo!

Ich durchschaue zwar die Logik in deinem Programmausschnitt nicht ganz. Was soll denn da gemacht werden? Und wieso springst du mit deinem Goto direkt in das If-Then-Else Konstrukt? Das wird ja dann gar nicht ausgewertet.
Aber ich würde das auch in VB.Net ohne ‚Goto‘ schreiben. Etwa so:

If inthelp 30 Then
 intamin=intamin-intpzeit
End If

Ich habe versucht deine Programmlogik nachzubauen. Ich weiß nicht, ob das so stimmt.

mfg
christoph

Deine idee ist genail darauf hät ich au kommen können.War mein gedanke von einer weiteren hilfsvariablen doch richtig (inthelp).danke jetzt müsste es auch möglich sein das in java umzuschreiben.

Danke werd ich gleich ausprobieren.

Die Frage gab es schon vor ein paar Tagen und der Thread dazu ist sogar noch wenige Zeilen unter diesem hier zu lesen. Vergiß prozedurale Konzepte in einer objektorientierten Programmiersprache! Du wirst nicht glücklich damit! Lese, was eine objektorientierte Programmiersprache ausmacht, lese wofür Konstruktoren und Methoden da sind…

das Problem hat sich gelöst. trotzdem danke. Durch den If teil läufts jetzt (zumindest mit dem schreiben ob des Prog dann läuft is no ne andere frage.

Denoch danke

Linden

Also das Prog hab ich fertig nur mit einem Problem und zwar dieses hier:

Exception in thread „main“ java.util.UnknownFormatConversionException: Conversion = ‚D‘
at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2605)
at java.util.Formatter$FormatSpecifier.(Formatter.java:2633)
at java.util.Formatter.parse(Formatter.java:2479)
at java.util.Formatter.format(Formatter.java:2413)
at java.io.PrintStream.format(PrintStream.java:920)
at java.io.PrintStream.printf(PrintStream.java:821)
at Übungen1.main(Übungen1.java:62)

ich hab leider keine ahnung was das zu bedeutet hat

public class Übungen1 
{
 public static void main(String[] args)
 {
double AB; //Deklariere Arbeitsbeginn
double AE; //Deklariere Arbeitsende
double PD; //Deklariere Pausendauer

double AH; //Deklariere Arbeitstunden
double Amin;//Deklariere Arbeitsminuten

double min;//Deklariere Zwischenvariable für Minuten
double h;//Deklariere Zwischenvariable für stunden
double hend;//Deklariere Zwischenvariable für endstunden
double minend;//Deklariere Zwischenvariable für endminuten
double Pzeit;//Deklariere Zwischenvariable für Pausenzeit

double y;//Deklariere Hilfsvariable
double help;//Deklariere Hilfsvariable

AB=7.30;
AE=16.30;
PD=60;

if (AB\>24)
{
 System.out.printf("Falsche Eingabe bitte eine Zahl zwsichen 0 und 24!!!");
 return;
}

if (AE\>24)
{
 System.out.printf("Falsche Eingabe bitte eine Zahl zwsichen 0 und 24!!!");
 return;
}

AB=AB\*100;
AE=AE\*100;

h=AB/100; //Module division zur Trennung der Stunden und Minuten
min=AB % 100;

hend=AE/100;
minend=AE%100;

AH=hend-h;//Arbeitszeitberechung
Amin=minend-min;

if (Amin 0)
 {
 Amin=Amin + Pzeit;
 }
 if(help\>30)
 {
 Amin=Amin-Pzeit;
 }

while (Amin \>=60);
{
 Amin=Amin-60;
 AH=AH++;
}

while (Amin

das wär der komplette Code ich bin grad dabei etwaige fehler die noch im vb programm stecken auszumerzten und sie hier ebenfalls zu korrigieren.
Mein Vermutung ist das i-was mit der Main nicht stimmt also dem oberen teil und dann die ausgabe,lieg ich richtig? Aba wie ichs verbessern soll weiß ich leider au net. Bin auch o dabei eine Eingabe einzusetzen.

Hff könnt ihr mir helfen.

MfG Linden

ich hab leider keine ahnung was das zu bedeutet hat

Du versuchst Variablen wie in VB auszugeben und das hat mit der Syntax von JAVA nichts zu tun. Das sind Strings und die werden mit ‚+‘ konkateniert, Beispiel:

String eins = „Hallo“;
int zahl = 45;
System.out.println(eins + " Welt, die Zahl lautet: " + zahl);

Nochmal die Warnung: DU KANNST NICHT EINFACH VB CODE EINS ZU EINS IN JAVA SCHREIBEN! Lies die Tutorials!!! Sowas fällt die früher oder später ganz mächtig auf die Füße!

bei vb08 ist die ausgabe nicht so eher bei c++.Kann sein das ich vorlautem nebenher au no c++ programmieren darauf verfallen bin danke für den hinweis.

Ausgabe vb:
lblhallo.text=cstr(inthallo)

Ausgabe c++:
int hallo = „Rufius“
printf(„Ihr name Lautet: %d“,hallo);

und laut meinem Java-Grundlagen buch:
System.out.printf(„Hallo %g“,Hallo);

Die Ausgaben stimmen so das PRoblem liegt bei den If die sind in vb als elseif geschreiben hier muss ich das ersma abändern.also es war net die ausgabe.

Linden

Hallo.

Exception in thread „main“
java.util.UnknownFormatConversionException: Conversion = ‚D‘
at

[…]

at Übungen1.main(Übungen1.java:62)

System.out.printf(„Momentane ergebnisse:Amin: %D ,AH: %D,
minend: %d, min: %d.“,Amin,AH,minend,min);

Die Fehlermeldung weist auf diese Zeile hin und besagt, dass „%D“ keine gültige Formatsangabe ist. Du willst hier vermutlich „%d“, um die double-Werte auszugeben. Java unterscheidet dort zwischen Groß- und Kleinschreibung.

Sebastian.

danke für den hinweis. den fehler hab ich schon vorhin entdeckt und behoben trotzdem danke. das problem ligt denk ich mal am if im untersten teil wo 2 if hintereinander kommt. bin dabei das abzuändern.

Danke

Linden

so es stimmt soweit alles bis auf einen punkt und der sollte der letzte Fehlerpunkt in.

Ich habe statt dem else if ein switch eingefügt. alle datentypen sind float wie ihr im code sehen werdet. ich habe PD in integer umgewandelt (PD —> int yes)

aber im 2 case wird angezeigt das es ein bool. wert hat. ich weiß nicht wie ich das prob lösen soll.Danach sollte es eingetlich funkionieren.

public class Uebung {

 public static void main(String[] args)
 {
float AB; //Deklariere Arbeitsbeginn
float AE; //Deklariere Arbeitsende
int PD; //Deklariere Pausendauer

float AH; //Deklariere Arbeitstunden
float Amin;//Deklariere Arbeitsminuten

float min;//Deklariere Zwischenvariable für Minuten
float h;//Deklariere Zwischenvariable für stunden
float hend;//Deklariere Zwischenvariable für endstunden
float minend;//Deklariere Zwischenvariable für endminuten
float Pzeit;//Deklariere Zwischenvariable für Pausenzeit

float y;//Deklariere Hilfsvariable
float help;//Deklariere Hilfsvariable

AB=(float) 7.3;
AE=(float) 16.3;
PD=60;

if (AB\>24)
{
 System.out.printf("Falsche Eingabe bitte eine Zahl zwischen 0 und 24!!!");
 return;
}

if (AE\>24)
{
 System.out.printf("Falsche Eingabe bitte eine Zahl zwischen 0 und 24!!!");
 return;
}

AB=AB\*100;
AE=AE\*100;

h=AB/100; //Module division zur Trennung der Stunden und Minuten
min=AB % 100;

hend=AE/100;
minend=AE%100;

AH=hend-h;//Arbeitszeitberechung
Amin=minend-min;

if (Amin 0)
 {
 Amin=(Amin + Pzeit);
 }

 else
 {
 Amin=(Amin - Pzeit);
 }

while (Amin \>=60);
{
 Amin=Amin-60;
 AH=AH++;
}

while (Amin
ich weiß was der fehler bedeutet aber gelöst bekomm ichs net. vll isdie lösung ja wieder piep einfach aba im mom komm ich net druff.

vll wisst ihr rat.

dank schon mal

MfG Linden

Hi,

aber im 2 case wird angezeigt das es ein bool. wert hat. ich
weiß nicht wie ich das prob lösen soll.Danach sollte es
eingetlich funkionieren.

switch (yes)

{
case 0:
Amin=Amin-min;
AH=AH++;

case (yes

Die Werte hinter „case“ müssen Konstanten sein und einen zum switch-Wert passenden Typ haben. Deine booleschen Ausdrücke "yes
if (yes == 0) {

} else if (yes

1 Like

danke

könntest du eine if-else-Kaskade benutzen:

if (yes == 0) {

} else if (yes

das hab ich auch bemerkt. Das mit den kaskaden hab ich auch versucht bei mir kommt bei den else if dann immer ein Fehler
das das if ohne else sein sollte ist es dann so ist es leider ein fehler.
die kaskade ist eine gute idee leider klappt sie bei mir nicht.

Danke

Linden

die kaskade ist eine gute idee leider klappt sie bei mir
nicht.

Dann such den Fehler (oder zeig uns hier die exakte (!) Fehlermeldung); mein Beispiel war mit Ausnahme der Pünktchen „…“ syntaktisch korrekt.

Andreas

soo die kaskade klappt jetzt und leider tritt noch ein fehler auf (also langam reichts mir mit fehlern)

Jetzt ist mein Problem Pzeit wird kein wert zugeordnet obwohl in der if-kaskade pzeit berechnet wird!

so siweht mein Code jetzt aus

public class Uebungen1
{
 public static void main(String[] args)
 {
double AB; //Deklariere Arbeitsbeginn
double AE; //Deklariere Arbeitsende
int PD; //Deklariere Pausendauer

double AH; //Deklariere Arbeitstunden
double Amin;//Deklariere Arbeitsminuten

double min;//Deklariere Zwischenvariable für Minuten
double h;//Deklariere Zwischenvariable für stunden
double hend;//Deklariere Zwischenvariable für endstunden
double minend;//Deklariere Zwischenvariable für endminuten
double Pzeit;//Deklariere Zwischenvariable für Pausenzeit

double y;//Deklariere Hilfsvariable
double help;//Deklariere Hilfsvariable

AB=7.30;
AE=16.30;
PD=60;

if (AB\>24)
{
 System.out.printf("Falsche Eingabe bitte eine Zahl zwischen 0 und 24!!!");
 return;
}

if (AE\>24)
{
 System.out.printf("Falsche Eingabe bitte eine Zahl zwischen 0 und 24!!!");
 return;
}

AB=AB\*100;
AE=AE\*100;

h=AB/100; //Module division zur Trennung der Stunden und Minuten
min=AB % 100;

hend=AE/100;
minend=AE%100;

AH=hend-h;//Arbeitszeitberechung
Amin=minend-min;

if (Amin =60);
 {
 Amin=Amin-60;
 AH=AH++;
 }

 while (Amin0)
 {
 Amin=(Amin + Pzeit);
 }

 else
 {
 Amin=(Amin - Pzeit);
 }

while (Amin \>=60);
{
 Amin=Amin-60;
 AH=AH++;
}

while (Amin

Die beiden Fehlermeldungen die erscheinen (ich weiß was sie bedeuten und die lösung ist eigentlich schon vorhanden!!):

java:109: variable Pzeit might not have been initialized
 Amin=(Amin + Pzeit);

Hff ist es das letzte Problem!!

Danke an alle das ihr mir so helft.
Seit anfang hat der code sich ganz schön verändert.

Linden
 ^

Jetzt ist mein Problem Pzeit wird kein wert zugeordnet obwohl
in der if-kaskade pzeit berechnet wird!

Wird er nicht. ist folgendes wahr in Zeile 61:

if (PD==0)

wird Pzeit nicht angefaßt, und ist in dem Fall nicht initialisiert.

Ich weiß ich rede mir den Mund fusselig, und Du willst das gar nicht hören und es ist auch das letzt mal, daß ich mich dazu äußere aber:
Du hast nicht ein bißchen JAVA gelernt in der ganzen Zeit. Alles was Du getan hast ist VB Code mit Gewalt in JAVA reinzuquetschen und damit das Konzept dieser Programmiersprache zu vergewaltigen. Das ist meiner Meinung nach, großer Mist, was Du hier versuchst.

Hallo,

du solltest dir vielleicht nochmal den Code genau durchlesen. Viele der Anweisungen machen gar keine Sinn.
Ein paar Beispiele:

Das Multiplizieren mit 100 zum Beispiel ist bei Zeitrechnungen ziemlich überflüssig, da 1 Stunde 60 Minuten hat und nicht 100. Für Zeitberechnungen hat Java zudem eine eigene Klasse. Zudem wäre 7:30 Uhr sowas wie 7h und 30 Minuten also 7h und 1/2h also 7,5 als float Wert.

Du musst z.B. auch nicht alle Variablen am Anfang deklarieren. Es reicht, wenn du es machst, sobald du sie nutzt und dann solltest du allen zumindest einen Wert zuweisen (z.B. 0).

Du weisst am Anfang AB 7,3 zu und fragst danach über das if, ob der Wert größer als 24 ist. Wie soll er das jemals werden? Du veränderst ja die Variable gar nicht. Das if ist also völlig überflüssig.

Erst setzt du AB=AB*100 dann setzt du h=AB/100. Warum setzt du nicht gleich h=AB?

Ich hoffe das bringt dir noch ein paar Ideen, mehr Übersicht in deinen Code und verringert deine Fehler.

Gruß,
Mike