//JAVA編程:四則運算(接收用戶輸入的2個操作數(shù),和運算符),計算之后,輸出結(jié)果~~~~
成都創(chuàng)新互聯(lián)長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為思南企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站建設(shè),思南網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
import java.util.Scanner;
public class 四則運算 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("請輸入第一個數(shù)字:");
int a = sc.nextInt();
System.out.print("請輸入運算符號:");
String str = sc.next();
char ch = str.charAt(0);
System.out.print("請輸入第二個數(shù)字:");
int b = sc.nextInt();
switch(ch)
{
case '+':
System.out.println(a+"+"+ b + "="+(a+b));
break;
case '-':
System.out.println(a+"-"+ b+ "="+(a-b));
break;
case '*':
System.out.println(a+"*"+ b+ "="+(a*b));
break;
case '/':
if(b==0){
System.out.println("被除數(shù)為零,運算無意義!");
break;
}
else {
System.out.println(a+"/"+ b+ " = "+(a/b));
break;
}
default:
System.out.println("運算符是無意義字符!");
break;
}
}
}
望采納~~~~~~~~
使用BigDecimal并且一定要用String來夠造。
實現(xiàn)方法如下:
import java.math.BigDecimal;
/**
* 由于Java的簡單類型不能夠精確的對浮點數(shù)進行運算,這個工具類提供精
* 確的浮點數(shù)運算,包括加減乘除和四舍五入。
*/
public class Arith{
//默認(rèn)除法運算精度
private static final int DEF_DIV_SCALE = 10;
//這個類不能實例化
private Arith(){
}
/**
* 提供精確的加法運算。
* @param v1 被加數(shù)
* @param v2 加數(shù)
* @return 兩個參數(shù)的和
*/
public static double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 提供精確的減法運算。
* @param v1 被減數(shù)
* @param v2 減數(shù)
* @return 兩個參數(shù)的差
*/
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精確的乘法運算。
* @param v1 被乘數(shù)
* @param v2 乘數(shù)
* @return 兩個參數(shù)的積
*/
public static double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供(相對)精確的除法運算,當(dāng)發(fā)生除不盡的情況時,精確到
* 小數(shù)點以后10位,以后的數(shù)字四舍五入。
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @return 兩個參數(shù)的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相對)精確的除法運算。當(dāng)發(fā)生除不盡的情況時,由scale參數(shù)指
* 定精度,以后的數(shù)字四舍五入。
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @param scale 表示表示需要精確到小數(shù)點以后幾位。
* @return 兩個參數(shù)的商
*/
public static double div(double v1,double v2,int scale){
if(scale0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精確的小數(shù)位四舍五入處理。
* @param v 需要四舍五入的數(shù)字
* @param scale 小數(shù)點后保留幾位
* @return 四舍五入后的結(jié)果
*/
public static double round(double v,int scale){
if(scale0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
};
將字符串轉(zhuǎn)換成數(shù)字:
有兩種方法:
第一種:
比如說;a="123",b=2,那么int num = Integer.parseInt(a);
然后與另外數(shù)字加減;
第二種:
運用BigDecimal num = new BigDecimal(a);
BigDecimal num2 = new BigDecimal(b);
BigDecimal result = num.add(num2);
或者減法:BigDecimal result = num.subtract(num2);
通過調(diào)用BigDecimal的各種方法即可以實現(xiàn)加減乘除。
兩種方法比較:
第一種只可以實現(xiàn)整數(shù)轉(zhuǎn)換;
第二種可以實現(xiàn)任何類型的轉(zhuǎn)換,而且計算精度高。
import java.util.Scanner;
public class HybridOperation {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("輸入一個表達式:");
String s = input.nextLine().trim();
int n = s.length();
int sum = 0;
int p = -1;
char a = '+';
for (int i = 1; i n; i++) {
char ch = s.charAt(i);
if (ch == '+' || ch == '-') {
if (a == '+') {
sum += Integer.parseInt(s.substring(p + 1, i));
a = ch;
p = i;
} else if (a == '-') {
sum -= Integer.parseInt(s.substring(p + 1, i));
a = ch;
p = i;
}
}
}
if (a == '+') {
sum += Integer.parseInt(s.substring(p + 1));
}
if (a == '-') {
sum -= Integer.parseInt(s.substring(p + 1));
}
System.out.println(s+" = "+sum);
}
}
可以實現(xiàn)任意次數(shù)的加減,
如:1+2+3-2
因為.字符串判斷內(nèi)容上是否相同,要使用的是equals函數(shù)
修改后的代碼
String?s?=?jtf2.getText();//字符串s已經(jīng)取得了文本框2的內(nèi)容.后面就直接使用把
double?result?=?0;
if?(s.equals("*"))?{//字符串判斷內(nèi)容是否一致,要使用equals函數(shù)?,
result?=?num1?*?num2;
}
if?(s.equals("/"))?{
result?=?num1?/?num2;
}
if?(s.equals("+"))?{
result?=?num1?+?num2;
}
if?(s.equals("-"))?{
result?=?num1?-?num2;
}
運行
setText(""+number1-number2);
因為java是從左到右處理的,在減法運算前有""字符串處理, java就會把之后的都當(dāng)做字符串處理.改成
setText(""+(number1-number2));
如果減法運算在前面,比如 number1-number2 + "".這樣是可以的