zoukankan      html  css  js  c++  java
  • Lab2

    1)this的用法;

    2)static

    3)gcd求最大公约数

    代码:

    	/* Fraction.java */
    	  
    	import java.io.*;
    
    	/** The Fraction class implements nonnegative fractions (rational numbers).
    	 */
    	class Fraction {
    
    	  /* private fields within a Fraction. */
    	  static private int numberOfFractions = 0;// static
    
    	  private int numerator;
    	  private int denominator;
    
    	  /** Constructs a Fraction n/d. 
    	   *  @param n is the numerator.  Must be nonnegative.
    	   *  @param d is the denominator.  Must be positive.
    	   */
    	  public Fraction(int n, int d) {
    	    if (n < 0) {
    	      System.out.println("Fatal error:  Negative numerator.");
    	      System.exit(0);
    	    }
    	    if (d < 1) {
    	      System.out.println("Fatal error:  Nonpositive denominator.");
    	      System.exit(0);
    	    }
    	    numberOfFractions++;
    	    numerator = n; 
    	    denominator = d;
    	  }
    
    	  /** Constructs a Fraction n/1. 
    	   *  @param n is the numerator.  Must be nonnegative.
    	   */
    	  public Fraction(int n) {
    	    this(n, 1);   //call the two-parameter constructor
    	  }
    
    	  /** Constructs a Fraction 0/1. 
    	   */
    	  public Fraction() {
    	    this(0,1);
    	  }
    
    	  /** Copies the Fraction "original".
    	   */
    	  public Fraction(Fraction original) {
    	    this(original.numerator,original.denominator);
    	  }
    
    	  /** Converts this Fraction to a string format:  "numerator/denominator."
    	   *  Fractions should be printed in reduced form (part of your assignment is
    	   *  to make this true).
    	   *  @return a String representation of this Fraction.
    	   */
    	  public String toString() {
    		  int thisGcd = gcd(numerator, denominator);//gcd最大公约数
    		  return (numerator / thisGcd + "/" + denominator / thisGcd);
    	  }
    
    	  /** Return the sum of two fractions.
    	   *  @param f2 is the Fraction to be added.
    	   *  @return the result of adding f2 to this Fraction.
    	   */
    	  public Fraction add(Fraction f2) {
    	    Fraction r = new Fraction((numerator * f2.denominator) +
    				      (f2.numerator * denominator),
    				      denominator * f2.denominator);
    	    return r;
    	  }
    
    	  /** Replaces this Fraction's numerator with a new value.
    	   *  @param numerator is the new numerator.  Must be nonnegative.
    	   */
    	  public void changeNumerator(int numerator) { // DO NOT CHANGE THIS SIGNATURE!
    	    // Fix the bug that prevents this method from working correctly.
    	    if (numerator < 0) {
    	      System.out.println("Fatal error:  Negative numerator.");
    	      System.exit(0);
    	    }
    	    this.numerator = numerator;
    	  }
    
    	  /** Returns the number of Fraction objects in existence.
    	   *  @return the number of Fraction objects in existence.
    	   */
    	  public int fracs() {                         // DO NOT CHANGE THIS SIGNATURE!
    	    // Fix the bug that prevents this method from working correctly.
    	    return numberOfFractions;
    	  }
    
    	  /** Computes the greatest common divisor (gcd) of the two inputs.
    	   * @param x must be nonnegative
    	   * @param y must be nonnegative
    	   * @return the gcd of x and y
    	   */
    	  static private int gcd(int x, int y) {
    	    /* Replace the following line with your solution. */
    		  if (y!=0) return gcd(y, x % y);
    		  else return x;         //递归法
    	  }
    
    	  /** Put the Fraction class through some tests.
    	   * @param argv is not used.
    	   */
    	  public static void main(String[] argv) {
    
    	    /* Test all four contructors and toString. */
    	    Fraction f0 = new Fraction();
    	    Fraction f1 = new Fraction(3);
    	    Fraction f2 = new Fraction(12, 20);
    	    Fraction f3 = new Fraction(f2);
    
    	    System.out.println("
    Testing constructors and toString():");
    	    System.out.println("The fraction f0 is " + f0.toString());
    	    System.out.println("The fraction f1 is " + f1);    // toString is implicit.
    	    System.out.println("The fraction f2 is " + f2);
    	    System.out.println("The fraction f3 is " + f3 + ", which should equal f2");
    
    	    /* Test the add method. */
    	    System.out.println("
    Testing add:");
    
    	    
    	    Fraction sumOfTwo = f1.add(f2);              // Sum of f1 and f2.
    	    Fraction sumOfThree =f0.add(f1).add(f2);             // Sum of f0, f1, and f2.
    
    	    System.out.println("The sum of " + f1 + " and " + f2 + " is " + sumOfTwo);
    	    System.out.println("The sum of " + f0 + ", " + f1 + " and " + f2 + " is " +
    	                       sumOfThree);
    	    
    
    	    /* Test the methods used in Part III. */
    	    System.out.println("
    Testing changeNumerator and fracs:");
    
    	    f3.changeNumerator(7);
    	    System.out.println("Now f3 is " + f3 + ", which should be 7/20");
    	    System.out.println("The total number of Fraction objects is " +
    	                       f3.fracs());
    
    	    /* Test gcd function (static method). */
    	    System.out.println("
    Testing gcd:");
    	    System.out.println("The gcd of 2 and 10 is: " + gcd(2, 10));
    	    System.out.println("The gcd of 15 and 5 is: " + gcd(15, 5));
    	    System.out.println("The gcd of 24 and 18 is: " + gcd(24, 18));
    	    System.out.println("The gcd of 10 and 10 is: " + gcd(10, 10));
    	    System.out.println("The gcd of 21 and 400 is: " + gcd(21, 400));
    	  }
    	}	
    	
    

     运行结果:

  • 相关阅读:
    项目实战从 0 到 1 学习之Flink (24)Flink将kafka的数据存到redis中
    LeetCode107. 二叉树的层次遍历 II
    LeetCode102. 二叉树的层序遍历
    LeetCode341. 扁平化嵌套列表迭代器
    【总结】二叉树的前中后序遍历(递归和非递归)
    LeetCode145. 二叉树的后序遍历
    LeetCode94. 二叉树的中序遍历
    LeetCode144. 二叉树的前序遍历
    LeetCode71. 简化路径
    LeetCode150. 逆波兰表达式求值
  • 原文地址:https://www.cnblogs.com/Miaostarer/p/7200546.html
Copyright © 2011-2022 走看看