У нас вы можете посмотреть бесплатно 溢位(overflow)第二關100%-Part 1 или скачать в максимальном доступном качестве, видео которое было загружено на ютуб. Для загрузки выберите вариант из формы ниже:
Если кнопки скачивания не
загрузились
НАЖМИТЕ ЗДЕСЬ или обновите страницу
Если возникают проблемы со скачиванием видео, пожалуйста напишите в поддержку по адресу внизу
страницы.
Спасибо за использование сервиса ClipSaver.ru
寫一個程式,讀取由兩個非負整數和一個運算符號組成的算式。
確定整數或算式的結果是否太大而無法表示為"正常"有正負號的整數
(如果您正在使用Pascal,則鍵入integer;如果使用c或Java,則鍵入int)。
輸入規範
一個未指定的行數。每一行都包含一個整數,兩個運算符中的一個'+'或'*',
和另一個整數。
輸出規範
對於每行輸入,直接輸出輸入行,然後再輸出0-3行適當的訊息,包含:
"first number too big"(第一個數字太大),
"second number too big"(第二個數字太大),
"result too big"(結果太大)。
設計規則一:設計一Java類別Overflow,
其建構函數constuctor輸入一行測試案例資料,如
Overflow(String line){...}
設計規則二:設計一Overflow的member function來列印案例資訊,如
String showCaseInfo(int caseno){...}回傳字串如下
Case #案例編號: express is [一行測試案例資料]
若案例編號大於1,則列印案例資訊前空一行。
設計規則三:設計一Overflow的member function來列解譯算式,如
String parseExpression(int caseno){...}其功能如下:
(1)再度使用Scanner對此行測試案例資料line進行斷字,分成三段子字串分別為aStr、op和bStr
(2)使用靜態類別Integer的parseInt()分別將aStr和bStr轉成整數a和整數b,如
a = Integer.parseInt(aStr);
(3)同時使用try catch來驗證字串轉成整數是否成功,如
try{a = Integer.parseInt(aStr);}catch(Exception e){...}
(4)設計兩member variables,來紀錄字串轉成整數的結果,如
boolean aBig,bBig;在建構函數皆預設為false代表字串轉整數的結果成功,
在catch(Exception e){}將其設為true代表字串轉整數的結果失敗並且將失敗原由紀錄於aMsg或bMsg中,如
aMsg = e.toString();
(5)最後設計一member function將算式解譯結果回傳,如
String showExpression(){...}此函數回傳格式如下:
第一行為"Operand1 is ["+aStr+"]
"
第二行為"Opreator is ["+op+"]
";
第三行為"Operand2 is ["+bStr+"]
"
若aBig為true則新增一行為"first number too big: "+aMsg+"
"
若bBig為true則新增一行為"second number too big: "+bMsg+"
"
設計規則四:修改設計規則三依舊使用try catch來新增加或乘的驗算如下,
(1)若為加則呼叫doAddition()來進行驗算並主動丟出Exception若結果發生Overflow時,
主動丟出Exception的樣式如下,
void doAddition() throws Exception {...}加法驗算的演算法如下,
驗算一:若aBig和bBig同時為true則主動丟出Exception如下
throw new Exception("Due to both operands too big");
驗算二:若只有aBig為true則主動丟出Exception如下
throw new Exception("Due to first operand too big");
驗算三:若只有bBig為true則主動丟出Exception如下
throw new Exception("Due to second operand too big");
驗算四:若只有a > 0而且b > 0而且c < 0代表驗算失敗,則主動丟出Exception如下
throw new Exception("Addition result: \""+c+"\" is overflow");
以上皆非,視為驗算正確,輸出算式正確答案。
(2)若為乘則呼叫doMultiplication()來進行驗算並主動丟出Exception若結果發生Overflow時,
驗算一:若aBig和bBig同時為true則主動丟出Exception如下
throw new Exception("Due to both operands too big");
驗算二:若只有aBig為true而且b!=0則主動丟出Exception如下
throw new Exception("Due to first operand too big");
驗算三:若只有bBig為true而且a!=0則主動丟出Exception如下
throw new Exception("Due to second operand too big");
驗算四:若a > 0而且b > 0而且c/a!=b代表驗算失敗,則主動丟出Exception如下
throw new Exception("Multiplication result: \""+c+"\" is overflow");
以上皆非,視為驗算正確,輸出算式正確答案。
(3)無論加或乘若能計算,則修改showExpression()如下
若能計算於doAddition()或doMultiplication()中設定
cResult = line+" = "+c+"
";
並於showExpression()中,輸出cResult字串當第四行,但若不能計算則沒有。
(4)最後,若doAddition()或doMultiplication()有Overflow發生,則
在catch(Exception e){}將cBig設為true代表驗算結果失敗並且將失敗原由紀錄於cMsg中,如
cMsg = e.toString();
若cBig為true則新增一行為"result number too big: "+cMsg+"
"