導航:首頁 > 編程語言 > java運算方法

java運算方法

發布時間:2023-01-29 15:54:38

❶ 加減乘除運算(java)

實際上這相當於javascript的eval方法,以下是該方法的java實現:

//Eval.java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class Eval {
public int eval(String exp){
List<String> list = infixExpToPostExp(exp);//轉化成後綴表達式
return doEval(list);//真正求值
}

//遇到操作符壓棧,遇到表達式從後綴表達式中彈出兩個數,計算出結果,壓入堆棧
private int doEval(List<String> list) {
Stack<String> stack = new Stack<String>();
String element;
int n1,n2,result;
try{
for(int i = 0; i < list.size();i++){
element = list.get(i);
if(isOperator(element)){
n1 = Integer.parseInt(stack.pop());
n2 = Integer.parseInt(stack.pop());
result = doOperate(n1,n2,element);
stack.push(new Integer(result).toString());
}else{
stack.push(element);
}
}
return Integer.parseInt(stack.pop());
}catch(RuntimeException e){
throw new IllegalExpressionException(e.getMessage());
}
}

private int doOperate(int n1, int n2, String operator) {
if(operator.equals("+"))
return n1 + n2;
else if(operator.equals("-"))
return n1 - n2;
else if(operator.equals("*"))
return n1 * n2;
else
return n1 / n2;
}

private boolean isOperator(String str){
return str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/");
}

private List<String> infixExpToPostExp(String exp){//將中綴表達式轉化成為後綴表達式
List<String> postExp = new ArrayList<String>();//存放轉化的後綴表達式的鏈表
StringBuffer numBuffer = new StringBuffer();//用來保存一個數的
Stack<Character> opStack = new Stack<Character>();//操作符棧
char ch,preChar;
opStack.push('#');
try{
for(int i = 0; i < exp.length();){
ch = exp.charAt(i);
switch(ch){
case '+':
case '-':
case '*':
case '/':
preChar = opStack.peek();
// 如果棧裡面的操作符優先順序比當前的大,則把棧中優先順序大的都添加到後綴表達式列表中
while(priority(preChar) >= priority(ch)){
postExp.add(""+preChar);
opStack.pop();
preChar = opStack.peek();
}
opStack.push(ch);
i++;
break;
case '(':
// 左括弧直接壓棧
opStack.push(ch);
i++;
break;
case ')':
// 右括弧則直接把棧中左括弧前面的彈出,並加入後綴表達式鏈表中
char c = opStack.pop();
while(c != '('){
postExp.add("" + c);
c = opStack.pop();
}
i++;
break;
// #號,代表表達式結束,可以直接把操作符棧中剩餘的操作符全部彈出,並加入後綴表達式鏈表中
case '#':
char c1;
while(!opStack.isEmpty()){
c1 = opStack.pop();
if(c1 != '#')
postExp.add("" + c1);
}
i++;
break;
//過濾空白符
case ' ':
case '\t':
i++;
break;
// 數字則湊成一個整數,加入後綴表達式鏈表中
default:
if(Character.isDigit(ch)){
while(Character.isDigit(ch)){
numBuffer.append(ch);
ch = exp.charAt(++i);
}
postExp.add(numBuffer.toString());
numBuffer = new StringBuffer();
}else{
throw new IllegalExpressionException("illegal operator");
}
}
}
}catch(RuntimeException e){
throw new IllegalExpressionException(e.getMessage());
}
return postExp;
}

private int priority(char op){//定義優先順序
switch(op){
case'+':
case'-':
return 1;
case'*':
case'/':
return 2;
case'(':
case'#':
return 0;
}
throw new IllegalExpressionException("Illegal operator");
}

}

Main.java 主函數所在類
public class Main
{
public static void main(String[] args) {

try {
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String exp=br.readLine();

int result = eval.eval(exp);
System.out.println(result);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

IllegalExpressionException異常類
public class IllegalExpressionException extends RuntimeException{

public IllegalExpressionException(){

}

public IllegalExpressionException(String info){
super(info);
}
}

❷ 怎麼在JAVA中運算表達式

Java表達式是變數、常量、運算符、方法調用的序列,它執行指定的計算並返回某個確定的值。

其中,運算符按操作數的數目:有一元運算符(++、--)、二元運算符(+、-、>等等)和三元運算符(?:),它們分別對應一到三個操作數。

表達式一般按運算符來分:

算術表達式(float x=8.3f、i++)、

關系表達式(3>7、3<7)、

布爾邏輯表達式((5>4)&&true、!false)、

位運算表達式(a=34^3)、

賦值表達式、

條件表達式(b=100>89?a=ture:a=false)

以及復合表達式。

還有一種叫「表達式語句」,就是在表達式後加上分號作為語句來使用。(int i=123;)

❸ 「100」+90,java中怎麼計算的

"「100」+90,java中計算方法"是兩個變數相加賦給第三個變數。操作方法如下:
1、新建一個java類,定義加法的方法;
2、定義方式為聲明兩個變數,然後相加,賦給第三個變數;
3、使用return返回出來;
4、運行編寫的java程序,兩個變數是100、90,賦給第三個變數就得到結果190。

❹ java運算符的計算方法

位運算符用於對整型數據進行按位操作,&「與」例如1&0=0,|「或」如:1|0=1
a=4|3=100(2)|11(2)=111(2)=7(10);
b=4&3=100(2)&011(2)=000(2)=0(10);

❺ JAVA怎麼進行關系運算

關系運算包括:

==

檢查如果兩個操作數的值是否相等,如果相等則條件為真。

(A == B)為假。




!=

檢查如果兩個操作數的值是否相等,如果值不相等則條件為真。

(A != B) 為真。




>

檢查左操作數的值是否大於右操作數的值,如果是那麼條件為真。

(A> B)為假。




<

檢查左操作數的值是否小於右操作數的值,如果是那麼條件為真。

(A <B)為真。




>=

檢查左操作數的值是否大於或等於右操作數的值,如果是那麼條件為真。

(A> = B)為假。




<=

檢查左操作數的值是否小於或等於右操作數的值,如果是那麼條件為真。

(A <= B)為真。

詳細詳細和代碼可以查看Java 運算符

❻ JAVA的加,減,乘,除運算方法

首先可以把計算器看成是一個對象就是一個類,它有加、減、乘、除功能,這四個就是這個類的方法;你可以給這個類定義兩個成員變數
int
x、int
y
然後分別用這四個方法對x
、y
實行加、減、乘、除並返回其值
代碼大概如下:
class
counter{
private
int
x;
private
int
y;
public
counter(){
}
public
counter(int
x,int
y){
this.x=x;
this.y=y;
}
public
double
adding(){
//加運算
return
x+y;
}
public
double
minus(){
//減運算
return
x-y;
}
public
double
times(){
//乘運算
return
x*y;
}
public
double
divide(){
//除運算
return
x/y;
}
}
//測試類
public
class
test{
public
static
void
main(string[]
args){
counter
c=new
counter(5,4);//實例化
system.out.println(c.adding());//輸出加的結果
system.out.println(c.minus());//輸出減的結果
system.out.println(c.times());//輸出乘的結果
system.out.println(c.divide());//輸出除的結果
}
}
希望對你有幫助

❼ java的加減乘除運算

使用BigDecimal並且一定要用String來夠造。
實現方法如下:

import java.math.BigDecimal;

/**

* 由於Java的簡單類型不能夠精確的對浮點數進行運算,這個工具類提供精

* 確的浮點數運算,包括加減乘除和四捨五入。

*/

public class Arith{

//默認除法運算精度

private static final int DEF_DIV_SCALE = 10;

//這個類不能實例化

private Arith(){

}

/**

* 提供精確的加法運算。

* @param v1 被加數

* @param v2 加數

* @return 兩個參數的和

*/

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 被減數

* @param v2 減數

* @return 兩個參數的差

*/

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 被乘數

* @param v2 乘數

* @return 兩個參數的積

*/

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();

}

/**

* 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到

* 小數點以後10位,以後的數字四捨五入。

* @param v1 被除數

* @param v2 除數

* @return 兩個參數的商

*/

public static double div(double v1,double v2){

return div(v1,v2,DEF_DIV_SCALE);

}

/**

* 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指

* 定精度,以後的數字四捨五入。

* @param v1 被除數

* @param v2 除數

* @param scale 表示表示需要精確到小數點以後幾位。

* @return 兩個參數的商

*/

public static double div(double v1,double v2,int scale){

if(scale<0){

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();

}

/**

* 提供精確的小數位四捨五入處理。

* @param v 需要四捨五入的數字

* @param scale 小數點後保留幾位

* @return 四捨五入後的結果

*/

public static double round(double v,int scale){

if(scale<0){

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();

}

};

❽ JAVA語言運算符的方法詳解

jar文件聽說過嗎,沒有?或者陌生!好,沒關系,這就是我們的第一站:打包發布。
為什麼會有這個玩意呢,首先,這是jar的全稱:JavaTM Archive (JAR) file,是的,就是java存檔文件。這有點類似zip文件,想一想它是干什麼的用的呢,壓縮!?沒錯就是要壓縮,將我們原先零散的東西放到一下,重新組織,所有這些目的只有一個:方便!好了,不用管他是怎麼壓縮的,我們的重點是哪些是我們要壓縮的(輸入),還有壓縮成了什麼(輸出),進而將它發布(部署)。
那我們的輸入(要壓縮的東西)主要是class文件,還有輔助的資源(這其中可能有圖片,jsp文件,html文件等等)。Jar技術在jdk1.1版本中就已存在,在1.2中又有了增強。接下來說說jar的好處吧,這是官方的描述:安全,快速下載,壓縮,獵取包,版本化包,可攜。
說了這么多,我們開始實施。
先打開命令提示符(win2000或在運行筐里執行cmd命令,win98為DOS提示符),輸入jar Chelp,然後回車(如果你盤上已經有了jdk1.1或以上版本),看到什麼:

❾ Java如何用最有效的方法計算22*8

Java乘法運算還有位運算符也可以完成乘法運算
<<左移運算符 ,左移一位,相當於乘2
>>右移運算符 ,右移一位,相當於除2
22 乘 8=11 乘 16, 16是2的4次方,就是通過位運算符,11向左移4位

22 乘 8最有效的計算方法為: 11左移4位 及11<<4

你明白了嗎?

閱讀全文

與java運算方法相關的資料

熱點內容
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:463
java線程安全的方法 瀏覽:950
重復命令畫梯形 瀏覽:164
在疫情就是命令 瀏覽:328
自己搭建一個什麼伺服器好玩 瀏覽:253
java基礎馬士兵 瀏覽:823
完美世界手游如何查看伺服器 瀏覽:859
光遇安卓與ios什麼時候互通 瀏覽:598
js如何運行時編譯 瀏覽:917
引力app在哪裡下載 瀏覽:609
編寫app如何得到錢 瀏覽:801
吉利汽車軟體放哪個文件夾安裝 瀏覽:223
多文件編譯c 瀏覽:543
頭頂加密後為什麼反而更稀疏 瀏覽:794