//利用java接口實現計算器,實現加減乘除的功能 import java.util.Scanner; class Test { public static void main(String[] args) { fun i = new fun(); jiafa s1 = new jiafa(); jianfa s2 = new jianfa(); chengfa s3 = new chengfa(); chufa s4 = new chufa(); System.out.println("請輸入你要計算的兩個數字:"); Scanner scanner = new Scanner(System.in); Scanner scanner2 = new Scanner(System.in); int str = scanner.nextInt(); int str2 = scanner2.nextInt(); int a = str; int b = str2; System.out.println("請輸入您想要計算的方式(+,-,*,/):"); Scanner scanner3 = new Scanner(System.in); String zifu1 = scanner3.next(); //next()不能讀取空格,nextline()可以讀取 //在實現字符窗口的輸入時,我個人更喜歡選擇使用掃描器Scanner,它操作起來比較簡單。 // 在寫作業的過程中,我發現用Scanner實現字符串的輸入有兩種方法,一種是next(), // 一種nextLine(),但是這兩種方法究竟有什么區別呢? // 首先,next()一定要讀取到有效字符后才可以結束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結束符, // next()方法會自動將其去掉,只有在輸入有效字符之后,next()方法才將其后輸入的空格鍵、 // Tab鍵或Enter鍵等視為分隔符或結束符。簡單地說,next()查找並返回來自此掃描器的下一個完整標記。 // 完整標記的前后是與分隔模式匹配的輸入信息, // 所以next方法不能得到帶空格的字符串而nextLine()方法的結束符只是Enter鍵, // 即nextLine()方法返回的是Enter鍵之前的所有字符,它是可以得到帶空格的字符串的。 //nextLine()自動讀取了被next()去掉的Enter作為他的結束符,所以沒辦法給s2從鍵盤輸入值。 // 經過驗證,其他的next的方法,如double nextDouble() , // float nextFloat() , int nextInt() 等與nextLine()連用時都存在這個問題, // 解決的辦法是:在每一個 next()、nextDouble() 、 www.gzlij.com()、nextFloat()、nextInt() // 等語句之后加一個nextLine()語句,將被next()去掉的Enter結束符過濾掉 scanner3.nextLine(); while(true) { if (zifu1.equals("+")) { System.out.print("加法結果:"); i.func(s1, a, b); break; } else if (zifu1.equals("-")) { System.out.print("減法結果:"); i.func(s2, a, b); break; } else if (zifu1.equals("*")) { System.out.print("乘法結果:"); i.func(s3, a, b); break; } else if (zifu1.equals("/")) { System.out.print("除法結果:"); i.func(s4, a, b); break; } else { System.out.println("非法輸入!"); break; } } } } interface Ijisuanqi { int jisuan(int a, int b); } class fun { public void func(Ijisuanqi per, int a, int b) { System.out.println(per.jisuan(a, b)); } } class jiafa implements Ijisuanqi { public int jisuan(int a, int b) { return a + b; } } class jianfa implements Ijisuanqi { public int jisuan(int a, int b) { return a - b; } } class chengfa implements Ijisuanqi { public int jisuan(int a, int b) { return a * b; } } class chufa implements Ijisuanqi { public int jisuan(int a, int b) { if (b == 0) { return -1; } else { return a / b; } } }
運行結果: