1. 程式人生 > >20172319 2018.04.11 《Java程序設計教程》第7周課堂測驗(補寫博客)

20172319 2018.04.11 《Java程序設計教程》第7周課堂測驗(補寫博客)

like 步驟 ide 編寫 代碼實現 工作 設計 適合 void

20172319 2018.04.11 《Java程序設計教程》第7周課堂測驗

  • 課程:《程序設計與數據結構》
  • 班級:1723
  • 學生:唐才銘
  • 學號:20172319
  • 指導老師:王誌強
  • 日期:2018.04.11
  • 必修/選修:必修

目錄

  • 測試內容
  • 測試要求
  • 實驗步驟
    • 前期準備
    • 需求分析
  • 代碼實現及解釋
  • 程序運行結果及代碼截圖
  • 測試過程及遇到的問題
  • 參考資料

測試內容

  • 完成編程項目PP7.4:具體參考《java程序設計教程》(第八版)
  • Compareble接口的實現

測試要求

  • 編譯運行項目PP7.4;並截圖(類代碼,測試代碼,運行結果代碼)發送至藍墨雲
  • 托管代碼至git@OSC,詳情參考使用開源中國托管代碼
  • 返回目錄

實驗步驟

前期準備

  • 敲好課本上的例7.3(RationalTester2.java-測試)及例7.4(RationalNumber2.java-類),編譯運行看其是否有誤,若有誤,對照課本對兩個代碼一一進行排查,無誤後即可開始著手編程項目。

需求分析

  1. 需要理解接口的基本知識
  2. 掌握如何實現接口
  3. 理解Comparable接口及其包含的compareTo方法(唯一一個方法)
  • 返回目錄

代碼實現及解釋

  1. 實現接口的類要在類聲明頭部使用保留字implements,接著再給出接口名。在RationalNumber類的頭部尾端加上implements Comparable<RationalNumber2>
    聲明要實現Comparable接口。
    public class RationalNumber2 implements Comparable<RationalNumber2>
  2. 若類聲明要實現某個接口,必須提供實現這個接口中所有方法的實現代碼。因此,要完整地實現接口需要在RationalNumber2類中提供實現接口中所有方法的代碼。public int compareTo(RationalNumber2 op2)
  3. 將RationalNumber2中的對象數值轉化為浮點值,再與定義好的誤差標準比較(理由:參考week5學習總結中的浮點數值比較時的較好方法)。

    double n1, n2, difference;
    
      n1 = (double) numerator / denominator;
      n2 = (double) op2.getNumerator() / op2.getDenominator();
      difference = Math.abs(n2 - n1);
      if(difference < 0.0001)
         return -1;
      else
         if (difference > 0.0001)
            return 1;
         else
            return 0;
  4. 測試程序代碼

public class RationalTester2
{
   //----------------------------------------------------------------------
   // Creates some rational number objects and performs various
   // operations on them.
   //----------------------------------------------------------------------
   public static void main(String[] args)
   {
      RationalNumber2 r1 = new RationalNumber2(1, 3);
      RationalNumber2 r2 = new RationalNumber2(1, 9);
      RationalNumber2 r3, r4, r5, r6, r7;

      System.out.println("First rational number: " + r1);
      System.out.println("Second rational number: " + r2);
      if (r1.isLike(r2))
          System.out.println("r1 and r2 are equal.");
      else
          System.out.println("r1 and r2 are NOT equal.");

      if (r1.compareTo(r2) == 1 )
            System.out.println(" r1 > r2 ");
        else
            if (r1.compareTo(r2) ==-1)
            System.out.println(" r1 < r2 ");
        else
            System.out.println("r1 = r2");

      r3 = r1.reciprocal();
      System.out.println("The reciprocal of r1 is: " + r3);

      r4 = r1.add(r2);
      r5 = r1.subtract(r2);
      r6 = r1.multiply(r2);
      r7 = r1.divide(r2);

      System.out.println("r1 + r2: " + r4);
      System.out.println("r1 - r2: " + r5);
      System.out.println("r1 * r2: " + r6);
      System.out.println("r1 / r2: " + r7);

   }
}
  • 返回目錄

程序運行結果及代碼截圖

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

  • 返回目錄

測試過程及遇到的問題

  • 問題1:條件語句的未知及關系運算符的錯誤使用導致輸出錯誤。
  • 解決:學習完條件語句,然後進行代碼調試,找到不合理的地方進行修改。
  • 問題2:對類編寫的相關知識還存在模糊、概念不清等情況,導致初期編程工作有阻礙。
  • 解決:查找資料,在編類時認真分析思考各個語句的作用,定義適合的方法名以便於調用。
  • 返回目錄

參考資料

  • 《Java程序設計與數據結構教程(第二版)》
  • 《Java程序設計與數據結構教程(第二版)》學習指導
  • 構造方法、toString()、this、return
  • 返回目錄

20172319 2018.04.11 《Java程序設計教程》第7周課堂測驗(補寫博客)