2016-04-06 19 views
0

私は1つのクラスでmainメソッドを作成し、別のクラスでは他の多くの小さなメソッドを作成しました。彼らの場所を使って私の主な方法でそれらを呼び出すと、私はそれらを呼び出した場合、彼らがアウトプリントすることを確認し、彼らはまだアウトプリントしていません。印刷する2つの方法だけが出力を示します。私はそれを修正する方法についてはわからないので、私はまだ多くのことを試していない。私のコードを見て、なぜ彼らが働いていないのを確認できますか?私の方法はなぜ印刷されませんか?

アップデート:私は、メインの方法ですべての行を得ることができましたが、私が受け取った助けを借りて28を除いています。今は残っているのは1つの出力だけです。私はコードを変更しましたので、少し上手く動作し、出力されなければシャットダウンしますが、出力はまだmissing.package rationalです。

私の主な方法

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); 
     } 


    } 

私の他のメソッドクラス

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

どこに問題がありますか?あなたはプリントアウトを期待していて、それを入手していないのはどのラインですか? – Gendarme

+0

私は最初に書いたコードの26〜29行目から出力を得ることを期待しています。 –

答えて

0

印刷方法は、必ずしも画面にバッファをフラッシュしません。 printメソッドをprintlnメソッドに置き換えてみてください。

+0

これはうまくいかないようです。 :/ –

2

だから、問題は反転方式である。この方法で即時にチェックがr2.charAtの文字(インデックス)==「/」)

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); 
    } 
`} 
} 

、そうでは決してありません。 index = 0の文字はprintRationalメソッドの 'Y'です。そうではないのでSystem.exit(0)が呼び出され、残りのプログラムを実行せずにすぐにプログラムを終了します。

私はこのコードがうまくいくと信じています。

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

これは意味があります。私はまた、ネゲートメソッドでもSystem.exit(0)を取り除いています。しかし、私がプログラムを実行すると、それは動作する2行を出力し、残りは決して印刷されません。その他の提案はありますか? –

+0

は私の元の応答で明確化を加えました。 –

+0

これはinvertメソッドを出力するために働いていましたが、残りのメソッドはまだ印刷されません。 –

関連する問題