为什么我的方法打印出来了?

时间:2016-04-06 01:35:58

标签: java methods output rational-number rational-numbers

我在一个类中创建了一个main方法,在另一个类中创建了许多其他小方法。当我使用他们的位置在我的主要方法中呼叫他们并确保如果我打电话他们会打印,他们仍然不会打印。只有print两种方法显示任何输出。我不确定如何修复它所以我还没有尝试过很多东西。你能看看我的代码并检查他们为什么不工作吗?

更新:我已经设法获得主要方法中的所有内容,除了28个人在我收到的帮助下工作。现在剩下的就是一个输出。我已经更改了代码,因此它运行得更好,如果没有输出就会关闭,但输出仍然缺失。包理性;

我的主要方法

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

3 个答案:

答案 0 :(得分: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)==&#39; /&#39;)中的字符,但事实并非如此。因为index = 0处的字符是&#39; Y&#39;来自printRational方法。因为情况并非如此,所以调用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);
        }
}

答案 1 :(得分:0)

打印方法不一定将缓冲区刷新到屏幕。尝试使用println方法替换print方法。

答案 2 :(得分:0)

一旦这是一个合理的包。,尝试将system.out.print更改为system.out.println。基本上你的所有代码都没问题。试试看这个链接。

点击[此处](http://introcs.cs.princeton.edu/java/92symbolic/Rational.java.html)!