代碼如下,只是時(shí)間倉(cāng)促有些簡(jiǎn)陋,沒(méi)有坐標(biāo)軸,而且大小比例問(wèn)題也沒(méi)有調(diào)好。不過(guò)功能實(shí)現(xiàn)了。嘎嘎,新手上路,騰云駕霧。
目前創(chuàng)新互聯(lián)建站已為超過(guò)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、尼木網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Bbso extends JPanel{
int x,y,x1,y1,m=100;
double d;
public Bbso() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBounds(100,100,500,300);
f.setTitle("畫曲線");
f.setVisible(true);
f.getContentPane().add(this);
}
public static void main(String arg[]) {
new Bbso();
}
public void paint(Graphics g) {
super.paintComponent(g);
x1=0;
y1=0;
for(x=-250;x250;x++) {
d=-0.2045*x*x+100.41*x-6736.8; //這里填寫公式
y=(int)d;
g.drawLine(x1,y1+m,x,y+m);
x1=x;
y1=y;
}
}
}
import os def readPro(): try: res = os.popen("cmd /c aws start"); print res.read(); except: print "Exception"; raise finally: print "Done!"; if __name__ == '__main__': readPro()
通過(guò)棧實(shí)現(xiàn),先用棧將中綴表達(dá)式轉(zhuǎn)化為后綴表達(dá)式,然后再用棧計(jì)算后綴表達(dá)式的值的
package com.saturday;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyParse {
static MapString,Integer optrOrder;
static {
optrOrder=new HashMapString,Integer();
optrOrder.put("(", 0);
optrOrder.put("*", 1);
optrOrder.put("/", 1);
optrOrder.put("%", 1);
optrOrder.put("+",2);
optrOrder.put("-",2);
optrOrder.put("^",3);
optrOrder.put("#",3);
}
public static void main(String[] args){
ListString tokens;
try{
//詞法分析
tokens=lex("+2* (-2+3*4)+-5");
//中綴轉(zhuǎn)后綴
tokens=toRpn(tokens);
//計(jì)算結(jié)果
System.out.println(calcRpn(tokens));
}catch(Exception ex){
ex.printStackTrace();
}
}
/**
* 將輸入串轉(zhuǎn)換為操作符串
* @param sExpres
* @return
*/
public static ListString lex(String sExpres){
ListString tokens=new ArrayListString();
//將表達(dá)式分割成符號(hào)序列
String sRegExp="(((?=^|\\(|\\+|-|\\*|/|%)(\\+|-))?\\d+(\\.\\d+)?)"
+"|\\(|\\)|\\*|/|\\+|-";
Pattern p=Pattern.compile(sRegExp);
Matcher m=p.matcher(sExpres.replaceAll("\\s+",""));
while(m.find()){
tokens.add(m.group());
}
tokens.add("#");
return tokens;
}
/**
* 將中綴表單時(shí)轉(zhuǎn)化為后綴表達(dá)式
* @param tokens
* @return
*/
public static ListString toRpn(ListString tokens)
throws Exception{
ListString rpnList=new ArrayListString();
StackString optrStack=new StackString();
optrStack.add("^");
for(String token:tokens){
if(token.matches("^(\\+|-)?\\d+(\\.\\d+)?$")){
rpnList.add(token);
}else{
outputOptr(token,optrStack,rpnList);
}
}
if(!optrStack.isEmpty()
optrStack.lastElement().equals("#")){
return rpnList;
}else{
throw new Exception("后綴表達(dá)式轉(zhuǎn)化錯(cuò)誤!");
}
}
/**
* 計(jì)算后綴表達(dá)式的值
* @param rpnTokens
* @return
* @throws Exception
*/
public static double calcRpn(ListString rpnTokens)
throws Exception{
NumberFormat nf=NumberFormat.getInstance();
StackDouble numStack=new StackDouble();
for (String token : rpnTokens) {
if (token.matches("^(\\+|-)?\\d+(.\\d+)?$")) {
token=token.indexOf('+')==0
?token.substring(1)
:token;
numStack.add(nf.parse(token).doubleValue());
} else {
doCalcByOptr(token, numStack);
}
}
if (!numStack.isEmpty() numStack.size() == 1) {
return numStack.lastElement();
} else {
throw new Exception("計(jì)算錯(cuò)誤!");
}
}
/**
* 將運(yùn)算符輸出到后綴表達(dá)式序列.
* @param optr
* @param optrStack
* @param rpnList
* @throws Exception
*/
public static void outputOptr(String optr,
StackString optrStack,
ListString rpnList)
throws Exception{
String preOptr;
if(optr.equals("(")){//處理左括號(hào)
optrStack.push(optr);
return;
}
if(optr.equals(")")){//處理右括號(hào)
while(!optrStack.isEmpty()){
preOptr=optrStack.pop();
if(!preOptr.equals("(")){
rpnList.add(preOptr);
}else{
break;
}
}
if(optrStack.isEmpty()){
throw new Exception("括號(hào)未閉合!");
}
return;
}
/*按優(yōu)先級(jí)處理其他運(yùn)算符,若當(dāng)前運(yùn)算符優(yōu)先級(jí)較高
* 直接入棧,否則將棧中運(yùn)算符出戰(zhàn)直至棧頂運(yùn)算符
* 低于當(dāng)前運(yùn)算符
*/
preOptr=optrStack.lastElement();
if(optrCmp(optr,preOptr)0){
optrStack.push(optr);
}else{
while(!preOptr.equals("(")
!optrStack.isEmpty()
optrCmp(optr,preOptr)=0){
preOptr=optrStack.pop();
if(!preOptr.equals("^")){
rpnList.add(preOptr);
}
}
optrStack.push(optr);
}
}
/**
* 運(yùn)算符優(yōu)先級(jí)比較函數(shù),optr1優(yōu)先級(jí)大于optr2返回小于0值,
* 優(yōu)先級(jí)相等返回0,optr1小于optr2返回大于0值.
* @param optr1
* @param optr2
* @return
*/
public static int optrCmp(String optr1,String optr2){
int order1=optrOrder.get(optr1);
int order2=optrOrder.get(optr2);
return order1-order2;
}
/**
* 根據(jù)運(yùn)算符對(duì)數(shù)據(jù)棧中的內(nèi)容進(jìn)行操作.
* @param optr
* @param numStack
*/
public static void doCalcByOptr(String optr,
StackDouble numStack){
double n1,n2;
n2=numStack.pop();
n1=numStack.pop();
if(optr.equals("+")){
numStack.push(n1+n2);
}else if(optr.equals("-")){
numStack.push(n1-n2);
}else if(optr.equals("*")){
numStack.push(n1*n2);
}else if(optr.equals("/")){
numStack.push(n1/n2);
}else if(optr.equals("%")){
numStack.push(n1%n2);
}
}
}
Javascript中的類型轉(zhuǎn)換 :首先我們可以看C中間的強(qiáng)制類型轉(zhuǎn)換,只能存在整數(shù)可表示類型和浮點(diǎn)數(shù)類型之間,比如(int)2.45,這是可以的,但是他們和字符串之間都沒(méi)有強(qiáng)制轉(zhuǎn)換的可能,因?yàn)樽址畬?shí)際是一個(gè)指針。因此不可能出現(xiàn)(char *)2.45就可以獲得"2.45"這個(gè)字符串的情況,反之也不能。而在C++中,我們可以創(chuàng)建一個(gè)類,并且重載強(qiáng)制轉(zhuǎn)換操作,來(lái)完成這種情況,那么就必須要求有相應(yīng)的對(duì)象,但是對(duì)于基本類型,這也是不可以的。然后,因?yàn)镴avaScript在對(duì)象模型上主要參考了Java,我們可以再參考一下Java的類型轉(zhuǎn)換:在Java中,基本類型之間的強(qiáng)制轉(zhuǎn)換也不是這樣的,比如,整數(shù)要轉(zhuǎn)換成字符串,必須使用Integer.toString()靜態(tài)方法或者String.valueOf()靜態(tài)方法,把字符串轉(zhuǎn)換為整數(shù),必須使用Integer.valueOf()??梢?jiàn),不能把JavaScript中的類型轉(zhuǎn)換看作為“強(qiáng)制類型轉(zhuǎn)換”。在JavaScript中,Double類型和Int類型都是看作為Number對(duì)象,因此無(wú)論是typeof 1還是typeof 1.0,都是返回number。這樣我們可以不用去管是Int還是Double類型,讓JavaScript解釋引擎內(nèi)部去處理。
javascript有兩種數(shù)據(jù)類型的轉(zhuǎn)換方法:一種是將整個(gè)值從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型(稱作基本數(shù)據(jù)類型轉(zhuǎn)換),另一種方法是從一個(gè)值中提取另一種類型的值,并完成轉(zhuǎn)換工作。
基本數(shù)據(jù)類型轉(zhuǎn)換的三種方法:1.轉(zhuǎn)換為字符型:String(); 例:String(678)的結(jié)果為"678"。2.轉(zhuǎn)換為數(shù)值型:Number(); 例:Number("678")的結(jié)果為678。3.轉(zhuǎn)換為布爾型:Boolean(); 例:Boolean("aaa")的結(jié)果為true。
public?class?Test{
public?int?abs(int?n)?{
if(n0)
return?-n;
return?n;
}
public?void?get()?{
int?sum?=?1?-?(25-abs(23)/23);
System.out.println(sum);
}
public?static?void?main(String[]?args)?{
Test?t?=?new?Test();
t.get();
}
}
你可以把需求講的更詳細(xì)一點(diǎn)!
public class Excel {
private jxl.Workbook rwb = null;
/**
* 得到當(dāng)前工作薄的總列數(shù)
*
* @parma sheetIndex 工作薄號(hào)
* @return int
*/
public int getColCount(int sheetIndex) {
int colCnt = 0;
try {
jxl.Sheet rs = rwb.getSheet(sheetIndex);
colCnt = rs.getColumns();
} catch (Exception e) {
colCnt = 0;
} finally {
try {
} catch (Exception e) {
colCnt = 0;
}
}
return colCnt;
}
/**
* 得到當(dāng)前工作薄的總行數(shù)
*
* @parma sheetIndex 工作薄號(hào)
* @return int
*/
public int getRowCount(int sheetIndex) {
int colCnt = 0;
try {
jxl.Sheet rs = rwb.getSheet(sheetIndex);
colCnt = rs.getRows();
} catch (Exception e) {
colCnt = 0;
} finally {
try {
} catch (Exception e) {
colCnt = 0;
}
}
return colCnt;
}
/**
* 打開(kāi)Excel.
*
* @parma fileName Excel文件名+文件路徑(絕對(duì)路徑)
* @return boolean
*/
public boolean openExcel(String fileName) {
boolean Rtn = false;
try {
is = new FileInputStream(fileName);
rwb = Workbook.getWorkbook(is);
Rtn = true;
} catch (Exception e) {
Rtn = false;
} finally {
try {} catch (Exception e) {}
}
return Rtn;
}
/**
* 取得某個(gè)單元格的內(nèi)容。不論單元格是何種數(shù)據(jù)類型都將返回字符型。
*
* @parma int col 列號(hào) int row 行號(hào)
* @return String
*/
public String getCellContent(int col, int row) {
String cellContent = "";
try {
// 默認(rèn)打開(kāi)第一張工作薄。
Sheet rs = rwb.getSheet(0);
// 取得某一單元格的內(nèi)容
Cell c00 = rs.getCell(col, row);
cellContent = c00.getContents();
} catch (Exception e) {
cellContent = "";
} finally {
try {
} catch (Exception e) {
cellContent = "";
}
}
return cellContent;
}
public static void main(String[] args) {
Excel ex = new Excel();
ex.openExcel("你自己的*.xls");
for (int i = 1; i ex.getRowCount(0); i++) {
for (int j = 0; j ex.getColCount(0); j++) {
System.out.println(ex.getCellContent(j, i));
}
}
}
}