2016-04-06 3 views
0

Ich habe eine Hauptmethode in einer Klasse und viele andere kleine Methoden in einer anderen Klasse erstellt. Wenn ich sie in meiner Hauptmethode unter Verwendung ihres Standorts anrufe und sicherstelle, dass sie drucken würden, wenn ich sie anrufe, werden sie immer noch nicht ausgedruckt. Nur die zwei Methoden zeigen eine Ausgabe an. Ich bin nicht sicher, wie ich es beheben soll, also habe ich noch nicht viele Dinge ausprobiert. Könnten Sie sich meinen Code ansehen und nachsehen, warum er nicht funktioniert?Warum wird meine Methode nicht ausgedruckt?

Update: Ich habe es geschafft, die ganze Linie in der Hauptmethode außer 28 arbeiten mit der Hilfe, die ich erhielt. Jetzt ist nur noch eine Ausgabe übrig. Ich habe den Code so geändert, dass es ein bisschen besser funktioniert und heruntergefahren wird, wenn es nicht ausgegeben wird, aber die Ausgabe immer noch fehlt.

Meine Haupt Methode

package rational; 

    /** 
    * 
    * @author Dominique 
    */ 

    public class Rational { 


     public static String number() { 
     rational1 number= new rational1(27, 3); 
     String r3= number.printRational(number); 
     return r3; 
    } 
     public static void main(String[] args) { 
      rational1 number= new rational1(27,3); 
      System.out.println(number()); 
      String r3=number(); 
      System.out.println(rational1.toDouble(27,3)); 
      rational1.add(number); 
      rational1.invert(r3, number); 
      rational1.negate(r3, number); 
      rational1.toDouble(27, 3); 
     } 


    } 

Meine andere Methode Klasse

package rational; 

/** 
* 
* @author Dominique 
*/ 
public class rational1 { 
    public int top; 
    public int bottom; 

public rational1() { 
this.top = 0;  
this.bottom = 0; 

} 
public rational1(int top, int bottom){ 
     this.top=top; 
     this.bottom=bottom; 
    } 
public String printRational(rational1 r1){ 
    String r3=("Your fraction is "+String.format(r1.top+"/"+r1.bottom)); 
    return r3; 
} 
public static void invert(String r2, rational1 r1) { 
    int index = r2.indexOf('s'); 

    if (index != -1) { 
      System.out.print(r2.substring(0, index+1));//works 
      System.out.println(" "+r1.bottom + "/" + r1.top); 
      index++; 
    } 
    else { 
      System.exit(0); 
     } 
} 
public static void negate(String r2, rational1 r1){ 
    int index = r2.indexOf('-'); 
if (index != -1) { 
    String stringValueOf = String.valueOf(r1.top); 
    System.out.println(r2.substring(0, 17));//works 
    System.out.println(r1.bottom+"/"+stringValueOf.substring(1)); 
    index++; 
    } 
} 


public static double toDouble(int one, int two){ 
    int three= one/two; 
    return three; 
} 

public static double gcd(double a, double b) 
{ 
double r = a % b; 
if (r != 0) 
{ 
return gcd(b, r); 
} 
else 
{ 
return b; 
} 
} 
public static double reduce(double t, double b){ 
     double numberone=gcd(t, b); 
     double pick=numberone*(b/t); 
     return pick; 
    } 

public static double add(rational1 r1){ 
    double pickone=(r1.top); 
    double choice= pickone+pickone; 
    double choice2=reduce(choice, r1.bottom); 
    return choice2; 
} 
} 
+0

Wo genau ist das Problem? Auf welcher Linie erwarten Sie einen Ausdruck und bekommen ihn nicht? – Gendarme

+0

Ich erwarte Ausgabe von Zeilen 26-29 des ersten Codes, den ich aufstellte, meine Hauptmethode. –

Antwort

0

Die Druckmethode spült nicht notwendigerweise die Puffer auf den Bildschirm. Versuchen Sie, die Druckmethode durch die println-Methode zu ersetzen.

+0

Das schien nicht zu funktionieren. :/ –

2

So ist das Problem in Invert-Methode:

public static void invert(String r2, rational1 r1){ 
     int index = 0; 

    while (index < 1) { 
    if (r2.charAt(index) == '/') { 
    System.out.print(r2.substring(0, 17)); 
    System.out.print(r1.bottom+"/"+r1.top); 
    index++; 
    }else{ 
     System.exit(0); 
    } 
`} 
} 

Diese Methode sofort überprüft das Zeichen an r2.charAt (Index) == '/'), aber dies nie der Fall ist. Weil das Zeichen bei Index = 0 'Y' von der printRational-Methode ist. Da dies nicht der Fall ist, wird System.exit (0) aufgerufen, wodurch das Programm sofort beendet wird, ohne den Rest des Programms auszuführen.

Ich glaube, dass dieser Code funktioniert.

public static void invert(String r2, rational1 r1) { 
    int index = r2.indexOf('/'); 

    if (index != -1) { 

      index++; 
    } 
    else { 
          System.out.print(r2.substring(0, index));//works 
      System.out.print(r1.bottom + "/" + r1.top); 
     } 
} 
+0

Das macht Sinn. Ich habe auch System.exit (0) in der Negate-Methode entfernt. Wenn ich jedoch das Programm ausführe, druckt es nur die zwei Linien aus, die funktionieren und der Rest wird nie gedruckt. Irgendwelche anderen Vorschläge? –

+0

hinzugefügt Klärung in meiner ursprünglichen Antwort. –

+0

Dies funktionierte, um die Umkehrmethode auszudrucken, aber der Rest meiner Methoden wird immer noch nicht gedruckt. –