項目html
內容java
這個做業屬於哪一個課程算法
https://www.cnblogs.com/nwnu-daizh/編程
這個做業的要求在哪裏dom
https://www.cnblogs.com/nwnu-daizh/p/11778090.html函數
做業學習目標學習
1.掌握java異常處理技術;測試
2.瞭解斷言的用法;編碼
3.瞭解日誌的用途;spa
4.掌握程序基礎調試技巧。
第一部分:總結第七章理論知識
1、異常
1.異常:在程序的執行過程當中所發生的異常事件,它中斷指令的正常執行。全部異常類都是由Throwable繼承而來,在下一層分解爲兩個支:Error(致命錯誤)和Exception(非致命錯誤)。
Exception層次結構又分解爲兩個分支:一個分支派生於RuntimeException;另外一個分支包含其餘異常。RuntimeException爲運行時異常類,通常是程序錯誤產生。
包含下面幾種狀況:
·錯誤的類型轉換
·數據訪問越界
·訪問空指針。
不是派生於RuntimeException的異常包括:
·試圖在文件尾部後面讀取數據
·試圖打開一個不存在的文件。
·試圖根據給定的字符串查找Class對象,而這個字符串表示的類不存在。
2.拋出異常:聲明拋出異常在方法聲明中用throws子句中來指明。
·throws子句能夠同時指明多個異常,說明該方法將不對這些異常進行處理,而是聲明拋出它們。
·一個方法必須聲明該方法全部可能拋出的已檢查異常,而未檢查異常要麼不可控制(Error),要麼應該避免發生(RuntimeException)。若是方法沒有聲明全部可能發生的已檢查異常,編譯器會給出一個錯誤消息。
·拋出異常對象經過throw語句來實現。
3.建立異常類
4.自定義異常類:定義一個派生於Exception的直接或間接子類。如一個派生於IOException的類。
5.捕獲異常:
(1)捕獲異常的第一步是用try{}子句選定捕獲異常的代碼範圍,由try所限定的代碼塊中的語句在執行過程當中可能會自動生成異常對象並拋出。
(2)catch子句:catch塊是對異常對象進行處理的代碼;
1)每一個try代碼塊能夠伴隨一個或多個catch語句,用於處理try代碼塊中所生成的各種異常事件;
2)catch語句只須要一個形式參數指明它所能捕獲的異常類對象,這個異常類必須是Throwable的子類,運行時系統經過參數值把被拋出的異常對象傳遞給catch塊;
3)catch塊能夠經過異常對象調用類Throwa。
4)getMessage:用來獲得有關異常事件的信息;
5)printStackTrace:用來跟蹤異常事件發生時執行堆棧的內容。
6.堆棧跟蹤:程序執行中一個方法調用過程的列表,它包含了程序執行過程當中方法調用的特定位置。
7.程序編碼時異常處理的兩種方式:
·積極處理方式:確切知道如何處理的異常應該捕獲
·消極處理方式:不知道如何去處理的異常聲明拋出
2、斷言
1.斷言機制容許在測試期間向代碼中插入一些檢查語句。當代碼發佈時,這些出入的檢測語句會被自動地移走。
2.使用assert關鍵字使用斷言,格式以下:
assert <條件> 或: assert <條件> <表達式>
這兩種形式都會對條件進行檢測,若是結果爲false,則拋出一個AssertionError異常,在第二種形式中,表達式將被傳入AssertionError的構造器,並轉換成一個消息字符串。
第二部分:實驗部分
一、實驗目的與要求
(1) 掌握java異常處理技術;
(2) 瞭解斷言的用法;
(3) 瞭解日誌的用途;
(4) 掌握程序基礎調試技巧
實驗3: 編程練習
(1)編寫一個計算器類,能夠完成加、減、乘、除的操做;
(2)利用計算機類,設計一個小學生100之內數的四則運算練習程序,由計算機隨機產生10道加減乘除練習題,學生輸入答案,由程序檢查答案是否正確,每道題正確計10分,錯誤不計分,10道題測試結束後給出測試總分;
(3)將程序中測試練習題及學生答題結果輸出到文件,文件名爲test.txt;
import java.io.FileNotFoundException;
//文件找不到,說明路徑填寫錯誤
import java.io.PrintWriter;
//將對象的格式化表示形式打印到文本輸出
import java.util.Scanner;
//簡化文本掃描,用於控制檯輸入
public class ss {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
sf sf=new sf();
PrintWriter output = null;
try {
output = new PrintWriter("ss.txt");
} catch (Exception e) {
//e.printStackTrace();
}
//聲明一個類,且類名必須和文件名相同
int sum = 0;
for (int i = 1; i < 11; i++) {
int a = (int) Math.round(Math.random() * 100);
int b = (int) Math.round(Math.random () * 100);
int s = (int) Math.round(Math.random() * 4);
//產生一個100之內的隨機數
// Math.round()給定數字的值四捨五入到最接近的整數
// Math.random ()令系統隨機選取大於等於0小於1之間的隨機數
switch(s)
{
case 1: //隨機相除驗證
System.out.println(i+": "+a+"/"+b+"=");
while(b==0){
b = (int) Math.round(Math.random() * 100);
}
double c = in.nextDouble();
output.println(a+"/"+b+"="+c);
if (c == sf.chu_fa(a, b)) {
sum += 10;
System.out.println("答案正確");
}
else {
System.out.println("答案錯誤");
} break;
case 2://隨機數相乘驗證
System.out.println(i+": "+a+"*"+b+"=");
int c1 = in.nextInt();
output.println(a+"*"+b+"="+c1);
if (c1 == sf.chen_fa(a, b)) {
sum += 10;
System.out.println("答案正確");
}
else {
System.out.println("答案錯誤");
}break;
case 3: //隨機數相加驗證
System.out.println(i+": "+a+"+"+b+"=");
int c2 = in.nextInt();
output.println(a+"+"+b+"="+c2);
if (c2 == sf.jia_fa(a, b)) {
sum += 10;
System.out.println("答案正確");
}
else {
System.out.println("答案錯誤");
}break ;
case 4: //隨機數相減驗證
System.out.println(i+": "+a+"-"+b+"=");
int c3 = in.nextInt();
output.println(a+"-"+b+"="+c3);
if (c3 == sf.jian_fa(a, b)) {
sum += 10;
System.out.println("答案正確");
}
else {
System.out.println("答案錯誤");
}break ;
}
}
System.out.println("成績"+sum);
output.println("成績:"+sum);
output.close();
}
}
public class sf //定義加減乘除運算
{
private int a;
private int b;
public int jia_fa(int a,int b)
{
return a+b;
}
public int jian_fa(int a,int b)
{
if((a-b)<0)
return 0;
else
return a-b;
}
public int chen_fa(int a,int b)
{
return a*b;
}
public int chu_fa(int a,int b)
{
if(b!=0)
return a/b;
else
return 0;
}
}
第三部分:實驗總結。
這周主要學習了java異常處理技術,程序的執行過程當中所發生的異常事件,它中斷指令的正常執行。因爲目前我對於各項基礎知識都是從零開始,在課堂上只能基本理解異常的概念分類。
代碼對我來說太可怕了,我拿到題目有基本的邏輯思路,可是我寫不出來。如上題目:在100之內產生隨機數,進行加減乘除的運算,判斷輸入值是否正確,得分進行累加進行輸出,將答題狀況輸出到文件。隨機數該如何產生?如何將隨機數分配到加減乘除的函數中輸出?計算正確如何將分數進行累加輸出?涉及到函數類的定義、基本運算、輸入提取、判斷語句、循環語句、文件的讀取和輸出。
我看了網上寫的程序,也有不少地方不理解,運行也運行不出來,這做業作得我心塞塞。本身沒有作出來不如實話實說。編程方面一口氣也吃不成一個大胖子,必須從基礎開始打起。我只能複製別人的代碼,逐字逐句去理解,爲何要寫這句代碼,怎麼定義函數算法。我會從基礎的慢慢練習,儘快遇上你們的進度水平。