Hi,
ich habe hier ein kleines Programm, dass mir eine beliebeige (positive, natürliche Zahl) Potenz einer natürlichen, positiven Zahl ausrechnet, also z.B. 6^4.
Ich habe zum Einlesen, der Zahlen ein tool(ein jar-file) zur Verfügung gestellt bekommen, dass Werte einzeln aus der Standardeingabe einliest. Das Programm läuft, und so sieht es aus:
Ich verstehe hier nicht, was die return Anweisung macht, wenn ich beim Exponent oder der Basis ein nicht-Integer angebe, wird das Programm beendet, return bedeutet ja, dass zurückgekehrt wird zum Aufrufer, logischer weide müsste das ja die Anweisung sein, die nach dem Aufruf der main Methode kommt, ist das dann etwa immer sowas, wie system.exit?
Wenn ich statt den beiden returns, jeweils System.exit(0) bzw. System.exit(1) angebe bekomme ich vom compiler die Fehlermeldung, dass bei n>=1 n möglicher weise nicht initialisiert bzw. bei k*=x, x nicht initialisiert ist.
Warum klappt die Variante mit return, aber nicht die mit System.exit?
Gruss
ich habe hier ein kleines Programm, dass mir eine beliebeige (positive, natürliche Zahl) Potenz einer natürlichen, positiven Zahl ausrechnet, also z.B. 6^4.
Ich habe zum Einlesen, der Zahlen ein tool(ein jar-file) zur Verfügung gestellt bekommen, dass Werte einzeln aus der Standardeingabe einliest. Das Programm läuft, und so sieht es aus:
Code:
import tum.Urc;
public class BerechnePotenz
{
public static void main(String[] args)
{
int x, n, k;
System.out.print("Bitte Exponent eingeben!: ");
if (Urc.readInt()) n = Urc.getInt();
else return;
System.out.print("Bitte Basis eingeben!: ");
if (Urc.readInt()) x = Urc.getInt();
else return;
k=1;
while( n >= 1 )
{
if ( n%2 > 0)
{k*=x;
n-=1;}
else
{x*=x;
n/=2;}}
System.out.println(k);
}
}
Ich verstehe hier nicht, was die return Anweisung macht, wenn ich beim Exponent oder der Basis ein nicht-Integer angebe, wird das Programm beendet, return bedeutet ja, dass zurückgekehrt wird zum Aufrufer, logischer weide müsste das ja die Anweisung sein, die nach dem Aufruf der main Methode kommt, ist das dann etwa immer sowas, wie system.exit?
Wenn ich statt den beiden returns, jeweils System.exit(0) bzw. System.exit(1) angebe bekomme ich vom compiler die Fehlermeldung, dass bei n>=1 n möglicher weise nicht initialisiert bzw. bei k*=x, x nicht initialisiert ist.
Warum klappt die Variante mit return, aber nicht die mit System.exit?
Gruss