實現代碼以下:java
if (isOperator(token)) { //從棧中彈出操做數2 //從棧中彈出操做數1 int a = stack.pop(); int b = stack.pop(); //根據運算符和兩個操做數調用evalSingleOp計算result; //計算result入棧; result=evalSingleOp (token.charAt(0), b, a); stack.push(result); } else //若是是操做數 //操做數入棧; { stack.push(Integer.parseInt(token)); } }
注意:這裏須要注意的是操做數1和操做數的順序,否則在減法和除法上會出現問題。linux
expression = args[0]+" "+args[2]+" "+args[1]; MyDC evaluator = new MyDC(); result = evaluator.evaluate (expression); //這裏面負責傳遞參數,利用上個實驗已經實現的計算器類mydc來完成工做 private final char Modulo = '%'; return ( token.equals("+") || token.equals("-") ||token.equals("*") || token.equals("/") )||token.equals("%"); case Modulo :result = op1 % op2; //這裏負責擴展模運算。
這裏須要修改佈局文件。android
android 界面跳轉的幾種方式:git
第一種方式,用action來跳轉。
一、使用Action跳轉,若是有一個程序的 AndroidManifest.xml中的某一個Activity的IntentFilter段中定義了包含了相同的Action那麼這個Intent 就與這個目標Action匹配。若是這個IntentFilter段中沒有定義 Type,Category,那麼這個 Activity就匹配了。可是若是手機中有兩個以上的程序匹配,那麼就會彈出一個對話可框來提示說明。
Action的值在Android中有不少預約義,若是你想直接轉到你本身定義的Intent接收者,你能夠在接收者的 IntentFilter中加入一個自定義的Action值(同時要設定 Category值爲"android.intent.category.DEFAULT"),在你的Intent中設定該值爲Intent的 Action,就直接能跳轉到你本身的Intent接收者中。由於這個Action在系統中是惟一的。
2,data/type,你能夠用Uri來作爲data,好比Uri uri = Uri.parse(http://www.google.com);
Intent i = new Intent(Intent.ACTION_VIEW,uri);手機的Intent分發過程當中,會根據http://www.google.com 的scheme判斷出數據類型type
手機的Brower則能匹配它,在Brower的Manifest.xml中的IntenFilter中首先有ACTION_VIEW Action,也能處理http:的type。
3,至於分類Category,通常不要去在Intent中設置它,若是你寫Intent的接收者,就在Manifest.xml的 Activity的 IntentFilter中包含android.category.DEFAULT,這樣全部不設置 Category(Intent.addCategory(String c);)的Intent都會與這個Category匹配。
4,extras(附加信息),是其它全部附加信息的集合。使用extras能夠爲組件提供擴展信息,好比,若是要執行「發送電子郵件」這個動做,能夠將電子郵件的標題、正文等保存在extras裏,傳給電子郵件發送組件。
這裏須要從新創建一個佈局文件,並在java文件中創建關聯關係。express
第二種方式,用類名跳轉。
Intent負責對應用中一次操做的動做、動做涉及數據、附加數據進行描述,Android則根據此Intent的描述,負責找到對應的組件,將 Intent傳遞給調用的組件,並完成組件的調用。Intent在這裏起着實現調用者與被調用者之間的解耦做用。
Intent傳遞過程當中,要找到目標消費者(另外一個Activity,IntentReceiver或Service),也就是Intent的響應者。ide
所用核心代碼:佈局
t1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this,ThirdActivity.class); startActivity(intent); } });
碼雲連接測試
Toast是Android中用來顯示顯示信息的一種機制,和Dialog不同的是,Toast是沒有焦點的,並且Toast顯示的時間有限,過必定的時間就會自動消失。下面用一個實例來看看如何使用Toast。this
默認樣式:Toast.makeText(getApplicationContext(), "默認Toast樣式", Toast.LENGTH_SHORT).show(); 自定義顯示位置:toast = Toast.makeText(getApplicationContext(), "自定義位置Toast", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); 帶圖片效果:toast = Toast.makeText(getApplicationContext(), "帶圖片的Toast", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); LinearLayout toastView = (LinearLayout) toast.getView(); ImageView imageCodeProject = new ImageView(getApplicationContext()); imageCodeProject.setImageResource(R.drawable.icon); toastView.addView(imageCodeProject, 0); toast.show(); 徹底自定義:LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom, (ViewGroup) findViewById(R.id.llToast)); ImageView image = (ImageView) layout .findViewById(R.id.tvImageToast); image.setImageResource(R.drawable.icon); TextView title = (TextView) layout.findViewById(R.id.tvTitleToast); title.setText("Attention"); TextView text = (TextView) layout.findViewById(R.id.tvTextToast); text.setText("徹底自定義Toast"); toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show();
這裏利用button的點擊事件實現google
b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "20169207 Toast test ", Toast.LENGTH_SHORT).show(); } });
針對六種佈局進行了瞭解,並嘗試了基本操做。
每個佈局都有本身適合的方式,另外,這五個佈局元素能夠相互嵌套應用,作出美觀的界面
這裏嘗試添加了兩種監聽器,點擊和長按。
第一種: 在Test類中 定義一個類接口OnClickListener
第二種:直接在Test類上寫一個接口
第三種: 匿名內部類
點擊事件截圖:
長按監聽截圖:
碼雲連接