1. 程式人生 > >20165337第五周實驗報告

20165337第五周實驗報告

-o cat RR turn lose 命令行 開發 oat rep

一.命令行下Java程序開發
1.輸入mkdir指令建立文件夾。
2.輸入javac -d . 目標文件夾/類名.java編譯文件
3.輸入javac 包名.類名運行文件
程序運行結果如下:
技術分享圖片

二.使用IDEA調試程序
1.編寫程序及運行
技術分享圖片

2.依次向下單步調試

技術分享圖片

3.在循環內調試

技術分享圖片

4.調試過程中,語句只運行一次

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

三.編寫並且調試運行程序
1.實驗題目:實現簡單四則運算(能支持分數,加減乘除,支持括號)
2.代碼編寫:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class hellojdk{
    public static void main(String[] args){
        BufferedReader reader=null;
        InputStreamReader inputStreamReader=null;
        try{
            System.out.println("請輸入表達式:或直接輸入#結束運算!");
            inputStreamReader=new InputStreamReader(System.in);
            reader=new BufferedReader(inputStreamReader);
            String str=reader.readLine();
            while(!str.equals("#")){
                System.out.println("運算結果為:"+opt(str)+"");
                System.out.println("請輸入表達式:或直接輸入#結束運算!");
                str=reader.readLine();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        if(reader!=null){
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static float opt(String s) throws Exception{
        if(s == null || "".equals(s.trim())) {
            return 0f;
        }
        int a1=s.indexOf("+");
        int a2=s.indexOf("-");
        int a3=s.indexOf("*");
        int a4=s.indexOf("/");
        int a5=s.indexOf("(");
        if(a1==-1&&a2==-1&&a3==-1&&a4==-1){
            if(s.trim()==null||"".equals(s.trim())){
                throw new Exception("operate error");
            }
            return Float.parseFloat(s.trim());
        }

        if(a5!=-1){
            int a6=s.indexOf(")");
            if(a6==-1){
                throw new Exception("括號不匹配");
            }else{
                float f=opt(s.substring(a5+1,a6).trim());
                s=s.replace(s.substring(a5,a6+1), String.valueOf(f));
                return opt(s);
            }
        }

        if(a1!=-1){
            return opt(s.substring(0,a1))+opt(s.substring(a1+1,s.length()));
        }
        if(a2!=-1){
            return opt(s.substring(0,a2))-opt(s.substring(a2+1,s.length()));
        }
        if(a3!=-1){
            return opt(s.substring(0,a3))*opt(s.substring(a3+1,s.length()));
        }
        if(a4!=-1){
            return opt(s.substring(0,a4))/opt(s.substring(a4+1,s.length()));
        }
        return Integer.parseInt(s.trim());
    }
}
3.代碼調試
分別對加減,乘除,混合運算以及括號優先級的運算測試以及負數結果的測試。

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

20165337第五周實驗報告