größter gemeinsamer teiler

baskefab

Mitglied
hallo, ich möchte ein programm schreiben um zwei zahlen einzulesen und dann den größten gemeinsamen teiler davon ausrechnen zu lassen. bin schon fast fertig nur ich habe ein problem dass das programm bei der eingabe 0 0 beendet werden soll. wär super wenn mir jemand meinen fehler aufzeigen könnte. :toll: hier der code:



import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
* This program is to read two numbers and calculate their greatest
* divider in common
* @throws IOException Throws an IOException
*
*/

public final class Shell {
private Shell() { }
/*
* This is the main method
*/
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader (new
InputStreamReader (System.in));

execute(in);

}


//auxiliary method to read two numbers
private static void execute(BufferedReader in) throws IOException {
boolean quit = false;
while (!quit){
boolean error = false;
System.out.println("gcd> ");

String input = in.readLine();
String[] tokens = input.trim().split("\\s+");

if (tokens.length != 2){
System.out.println("Error! 2 args!");
error = true;
}


if(!error) {

try{
int i = Integer.parseInt(tokens[0]);
int j = Integer.parseInt(tokens[1]);
if ( i == 0 && j == 0){
break;
} else {
System.out.println("gcd(" + i + ", " + j + ") = "
+ gcd(i,j));
}
} catch(NumberFormatException e) {
System.err.println("Error! Not numeric!");
error = true;
}


}}
}




// method to calculate the greatest divider in common of both numbers
public static int gcd ( int x, int y){
if (y < 0){

return gcd(x, -y);

}else if (x < 0){

return gcd(-x , y);
}else if ( y == 0){
return Math.abs(x);

}else if (x > y){
return gcd(x-y,y);
}else if (y > x){
return gcd (y , x);
}else if (x == y){
return x;
}else {
return -1;
}

}


}
 
G

Gast2

Gast
Java:
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
* This program is to read two numbers and calculate their greatest
* divider in common
* @throws IOException Throws an IOException
*
*/

public final class Shell {
private Shell() { }
/*
* This is the main method
*/
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader (new
InputStreamReader (System.in));

execute(in);

}


//auxiliary method to read two numbers
private static void execute(BufferedReader in) throws IOException {
boolean quit = false;
while (!quit){
boolean error = false;
System.out.println("gcd> ");

String input = in.readLine();
String[] tokens = input.trim().split("\\s+");

if (tokens.length != 2){
System.out.println("Error! 2 args!");
error = true;
}


if(!error) {

try{
int i = Integer.parseInt(tokens[0]);
int j = Integer.parseInt(tokens[1]);
if ( i == 0 && j == 0){
break;
} else {
System.out.println("gcd(" + i + ", " + j + ") = "
+ gcd(i,j));
}
} catch(NumberFormatException e) {
System.err.println("Error! Not numeric!");
error = true;
}


}}
}




// method to calculate the greatest divider in common of both numbers
public static int gcd ( int x, int y){
if (y < 0){

return gcd(x, -y);

}else if (x < 0){

return gcd(-x , y);
}else if ( y == 0){
return Math.abs(x);

}else if (x > y){
return gcd(x-y,y);
}else if (y > x){
return gcd (y , x);
}else if (x == y){
return x;
}else {
return -1;
}

}


}

Entschuldigung schon mal im Voraus, sollte ich gleich Doppelposten machen^^
 

Spewer

Aktives Mitglied
Dein Programm beendet doch wenn man
Code:
0 0
eingibt.

Java:
if ( i == 0 && j == 0){
break;
}
 
G

Gast2

Gast
[JAVA=53]} catch(NumberFormatException e) {[/code]
dürfte denke ich mal
[c]} catch(Exception e) {[/c]
da du mit break ja selber abbrichst, und NumberFormat eine StandartException für das Formatieren von Integer zu String ist.

Aber ich persönlich finde deinen Code sowieso etwas aufwendig^^
 

baskefab

Mitglied
bei eclipse geht es ja auch aber ich will es unter linux im terminal ausführen und das scheitert kläglich, und
der grund muss im code liegen. vielleicht könnt ihr nochmal drüber sehen.???:L
 
F

Firephoenix

Gast
Wenn es in eclipse geht und in der Konsole nicht, dann liegt es sicherlich nicht am Code.
Was für eine Fehlermeldung kommt denn und was hast du gemacht um das Programm aus der Konsole heraus zu starten?

Gruß
 

baskefab

Mitglied
es ist so, dass ich das programm von einem anderen programm überprüfen lasse, ich weiß auch nur soviel, dass
die standard konsole verwendet wird. ansonsten rattert das programm, nachdem ich den code eingeschickt habe,
alles ab und macht gewisse testeingaben und danach zeigt es mir an wo die fehler sind.
und dieses programm sagt mir andauernd, dass bei der eingabe 0 0, was zum ende führen soll,
dies nicht erreicht wird und ich weiß nicht wie es darauf kommt aber irgendwie muss ich versuchen es dazu
zu bringen es doch zu schlucken ??
vielleicht kennt ihr ja eine andere möglichkeit den fall 0 0 zu bearbeiten:(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Größter gemeinsamer Teiler: mein Code Java Basics - Anfänger-Themen 6
L Größter gemeinsamer Teiler Java Basics - Anfänger-Themen 9
K größter gemeinsamer Teiler berrechnen, funktioniert nur bei bestimmten Zahlen Java Basics - Anfänger-Themen 2
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
B Erste Schritte Größter Abstand von 2 Zahlen aus 3 Zahlen ausgeben Java Basics - Anfänger-Themen 6
B Finden gemeinsamer Kanten: welche Datenstruktur ? Java Basics - Anfänger-Themen 9
J Threads gemeinsamer Methoden Aufruf Java Basics - Anfänger-Themen 3
V Beliebige Dreistellige Zahl Teiler finden Java Basics - Anfänger-Themen 4
KogoroMori21 Größten gemeinsamen Teiler finden Java Basics - Anfänger-Themen 7
F Summe aller echten Teiler Java Basics - Anfänger-Themen 2
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
LikeManuel Anzahl der Teiler Java Basics - Anfänger-Themen 6
X Perfekte Zahlen mit Teiler ausgeben! Java Basics - Anfänger-Themen 29
S Zahl mit maximaler Anzahl von Teiler Java Basics - Anfänger-Themen 2
U Aufgabe - Teiler Java Basics - Anfänger-Themen 12
B Teiler einer Zahl ermitteln Java Basics - Anfänger-Themen 12
S Teiler ermittlen - Array erweitern? Java Basics - Anfänger-Themen 14
0 Anzahl der (primen) Teiler einer Zahl? Java Basics - Anfänger-Themen 6
G Ganzzahligen Teiler einer Eingabezahl k Java Basics - Anfänger-Themen 12
D ist a teiler von b? mit a und b gebrochene zahlen. Java Basics - Anfänger-Themen 6
C Teiler einer ganzen Zahl Java Basics - Anfänger-Themen 2
Y alle teiler einer zahl ausgeben Java Basics - Anfänger-Themen 23
J Teiler einer beliebigen Zahl ermitteln. Java Basics - Anfänger-Themen 19
G Ganzzahl oder nicht + gemeinsamen Teiler finden Java Basics - Anfänger-Themen 9
B größten gemeins. Teiler m. Euklidischen Algorith. nachbilden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben