0

あるクラスでメイン メソッドを作成し、別のクラスで他の多くの小さなメソッドを作成しました。それらの場所を使用してメインメソッドでそれらを呼び出し、それらを呼び出した場合にアウトプリントすることを確認しても、それらはまだアウトプリントしません。print two メソッドのみが出力を表示します。どのように修正すればよいのかわからないので、まだ多くのことを試していません。私のコードを見て、それらが機能しない理由を確認していただけますか?

更新: 受け取ったヘルプを使用して、28 を除いて、メイン メソッドのすべての行を取得することができました。残っているのは、その 1 つの出力だけです。コードを変更したので、動作が少し改善され、出力されない場合はシャットダウンされますが、出力はまだ失われています。

私の主な方法

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

3 に答える 3

2

したがって、問題は反転メソッドにあります。

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

このメソッドはすぐに r2.charAt(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);
        }
}
于 2016-04-06T01:45:52.613 に答える
0

これが合理的なパッケージになったら、 system.out.print を system.out.println に変更してみてください。基本的にすべてのコードは問題ありません。このリンクを見てみてください。

[ここ] ( http://introcs.cs.princeton.edu/java/92symbolic/Rational.java.html )をクリックしてください!

于 2016-04-06T01:54:05.117 に答える
0

print メソッドは必ずしもバッファーを画面にフラッシュするとは限りません。print メソッドを println メソッドに置き換えてみてください。

于 2016-04-06T01:40:00.410 に答える