20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
生活随笔
收集整理的這篇文章主要介紹了
20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一.結(jié)對對象
- 姓名:周亞杰
- 學(xué)號:20172302
- 擔任角色:駕駛員(周亞杰)
- 伙伴第二周博客地址
二.本周內(nèi)容
(一)繼續(xù)編寫上周未完成代碼
1.本周繼續(xù)編寫代碼,使代碼支持分數(shù)類計算
2.相關(guān)過程截圖
a.下圖是上周編寫的生成題目的類,不能運行。
下圖是本周更新的代碼,可以支持分數(shù)的產(chǎn)生,紅色框內(nèi)為主要更改區(qū)域
b.下圖是代碼中題目轉(zhuǎn)后綴表達式的部分代碼及運行結(jié)果截圖
c.下圖是代碼中后綴表達式計算結(jié)果的部分代碼及運行結(jié)果截圖
3.關(guān)鍵代碼解釋
在題目中生成真分數(shù)及包含真分數(shù)的題目轉(zhuǎn)換為后綴表達式
- 生成真分數(shù):這里我們讓產(chǎn)生的隨機數(shù)含有復(fù)數(shù),舉例,我們產(chǎn)生-4~9之間的隨機數(shù),如果產(chǎn)生隨機數(shù)為負數(shù),就將一個隨機產(chǎn)生的真分數(shù)賦給一個String型的figure,如果產(chǎn)生的隨機數(shù)為0~9,則將此隨機數(shù)轉(zhuǎn)換為String型的賦給figure,這樣就完成了真分數(shù)的生成在題目中。
- 含真分數(shù)的題目轉(zhuǎn)后綴表達式:我們調(diào)用StringTokenizer類中的方法,將上面的題目轉(zhuǎn)換為StringTokenizer類的一個對象,然后使用nextToken()方法,將其分為String的字符串,然后判斷字符串的長度,如果字符串長度大于1,就將字符串直接輸出,然后下面就是字符串為1的,包括整數(shù)和操作符,這個在上周已經(jīng)解決,包括入棧出棧,都已解決。
- 后綴表達式求值:正在編寫中:將所有的數(shù)都轉(zhuǎn)換為分數(shù),然后調(diào)用之前編寫類中的分數(shù)的加減乘除方法,然后完成求值,正在編寫中。
(二)遇到的困難及解決方法
、
(三)全部代碼
第一部分:生成題目 //負責(zé)人:侯澤洋
import java.util.Stack; import java.util.Random; import java.util.ArrayList; import java.util.Scanner;class Questions {ArrayList<Object> array = new ArrayList<Object>();Random generator = new Random();char[] newchar = {'+', '-', '*', '/'};protected int number;int NUM;public Questions() {number = 0;}public Object getQuestion(int num) {int num1 = num;while (num > 0) {int figure = (int) generator.nextInt(9) + 1;array.add(figure);number = (int) (Math.random() * 4);array.add(newchar[number]);num--;}String obj = "";while (num < 2 * num1) {obj += array.get(num);num++;}int other = (int) generator.nextInt(9) + 1;array.add(other);obj += other + "=";return obj;} }第二部分:題目運算 //負責(zé)人:周亞杰,侯澤洋
//生成后綴表達式public class Calculations {public static void main(String[] args) {Questions questions=new Questions();Stack stack = new Stack();Scanner Scan=new Scanner(System.in);char c;int count=0,answer;char[] operation = new char[100];String str = (String) questions.getQuestion(3);System.out.println("請回答以下問題:\n"+str);System.out.println("請輸入你的答案:");answer=Scan.nextInt();for (int i = 0; i < str.length(); i++) {c = str.charAt(i);if (c >= '0' && c <= '9') {operation[i] = c;count++;}else {if (c == '*' || c == '/') {if (stack.empty()) {stack.push((char) c);} else if ((char) stack.peek() == '*' || (char) stack.peek() == '/') {operation[i] = (char) stack.pop();stack.push(c);} elsestack.push(c);} else if (c == '+' || c == '-') {if (stack.empty()) {stack.push(c);} else if ((char) stack.peek() == '+' || (char) stack.peek() == '-') {operation[i] = (char) stack.pop();stack.push(c);} else {operation[i] = (char) stack.pop();stack.push(c);}} elsestack.push(c);}}int num = stack.size();for (int a = 0; a < num; a++) {operation[str.length() + a] = (char) stack.pop();} //后綴表達式計算 //負責(zé)人:周亞杰Stack<Integer> stack1 = new Stack<Integer>();int m, n, sum,num1=str.length()+(str.length()-count);for (int b = 0; b <= num1; b++) {if (operation[b] >= '0' && operation[b] <= '9')stack1.push((int) operation[b]-48);else {if (operation[b] == '+') {m = stack1.pop();n = stack1.pop();sum = n + m;stack1.push(sum);} else if (operation[b] == '-') {m = stack1.pop();n = stack1.pop();sum = n- m;stack1.push(sum);} else if (operation[b] == '*') {m = stack1.pop();n = stack1.pop();sum = n * m;stack1.push(sum);} else if (operation[b] == '/') {m = stack1.pop();n = stack1.pop();sum = n / m;stack1.push(sum);}else if (operation[b] == ' ')continue;}}if ((int)stack1.peek()==answer)System.out.println("恭喜你答對了!");elseSystem.out.println("很遺憾,答錯了!答案是:"+stack1.peek()); } }三.貢獻度劃分
侯澤洋:50%
周亞杰:50%
四.結(jié)對照片
五.評價及感想
本周完成的力度并不是很大,感覺和其他小組有些差距,這個周末要多抽時間追上其他小組進度,下周二完成整個項目的編寫。
轉(zhuǎn)載于:https://www.cnblogs.com/hzy0628/p/9011379.html
總結(jié)
以上是生活随笔為你收集整理的20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pc端三大主流系统?
- 下一篇: Java8-Guava实战示例