0

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

更新:除了 28 在我收到的帮助下工作之外,我已经设法在 main 方法中获得所有行。现在剩下的就是那个输出了。我已经更改了代码,使其工作得更好一些,如果它不输出,它会关闭,但输出仍然丢失。包理性;

我的主要方法

    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) == '/') 处的字符,但情况并非如此。因为 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

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

于 2016-04-06T01:40:00.410 回答
0

一旦这是在合理的包装中。尝试将 system.out.print 更改为 system.out.println 。基本上所有代码都可以。试试看这个链接。

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

于 2016-04-06T01:54:05.117 回答