importjava.awt.*;importjava.awt.event.*;classShopFrameextendsFrameimplementsActionListener{Labellabel1,label2,label3,label4;Buttonbutton1,button2,button3,button4,button5;TextAreatext;Panelpanel1,panel2;staticfloatsum=0.0f;ShopFrame(Strings){super(s);setLayout(newBorderLayout());label1=newLabel("面紙:3元",Label.LEFT);label2=newLabel("鋼筆:5元",Label.LEFT);label3=newLabel("書:10元",Label.LEFT);label4=newLabel("襪子:8元",Label.LEFT);button1=newButton("加入購物車");button2=newButton("加入購物車");button3=newButton("加入購物車");button4=newButton("加入購物車");button5=newButton("查看購物車");text=newTextArea("商品有:"+"\n",5,10);text.setEditable(false);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);panel1=newPanel();panel2=newPanel();panel1.add(label1);panel1.add(button1);panel1.add(label2);panel1.add(button2);panel1.add(label3);panel1.add(button3);panel1.add(label4);panel1.add(button4);panel2.setLayout(newBorderLayout());panel2.add(button5,BorderLayout.NORTH);panel2.add(text,BorderLayout.SOUTH);this.add(panel1,BorderLayout.CENTER);this.add(panel2,BorderLayout.SOUTH);setBounds(100,100,350,250);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){if(e.getSource()==button1){text.append("一個(gè)面紙、");sum=sum+3;}elseif(e.getSource()==button2){text.append("一只鋼筆、");sum=sum+5;}elseif(e.getSource()==button3){text.append("一本書、");sum=sum+10;}elseif(e.getSource()==button4){text.append("一雙襪子、");sum=sum+8;}elseif(e.getSource()==button5){text.append("\n"+"總價(jià)為:"+"\n"+sum);}}}publicclassShopping{publicstaticvoidmain(String[]args){newShopFrame("購物車");}}我沒用Swing可能顯示不出來你的效果。不滿意得話我在給你編一個(gè)。
目前創(chuàng)新互聯(lián)公司已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、任城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
package com.yangweitao.drp.util;
java代碼:
import java.util.HashMap;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*
* Bean工廠
* @author Administrator
*
*/
public class BeanFactory {
private static BeanFactory instance = null ;
//存放產(chǎn)品{key: 產(chǎn)品編號 value:具體產(chǎn)品}
private Map beans = new HashMap() ;
private Document doc = null ;
public BeanFactory(){
try {
doc = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("applicationContextl.xml"));
} catch (DocumentException e) {
e.printStackTrace();
throw new AppException("加載配置文件applicationContext.xml文件失敗");
}
}
/**
* 獲得實(shí)例
* @return
*/
public static BeanFactory getInstance(){
if(instance == null){
instance = new BeanFactory () ;
}
return instance ;
}
// /**
// * 根據(jù)產(chǎn)品標(biāo)識(shí)(id)得到產(chǎn)品 必須是同步的,因?yàn)闀?huì)產(chǎn)生線程安全問題
// * @param id
// * @return
// */
// public synchronized Object getBean(String key){
//
// if(beans.containsKey(key)){
// return beans.get(key);
// }
// //查找XML文件中key等于謀值的bean標(biāo)簽
// Object object = null ;
// try {
// Element elt = (Element)doc.selectObject("http://bean[@id=\"" + key +"\"]");
// object = Class.forName(elt.attributeValue("class")).newInstance() ;
// } catch (Exception e) {
// beans.put(key, object);
// }
// return object ;
// }
/**
* 根據(jù)產(chǎn)品標(biāo)識(shí)(id)得到產(chǎn)品 必須是同步的,因?yàn)闀?huì)產(chǎn)生線程安全問題
* @param id
* @return
*/
public synchronized Object getBean(Class objClass){
String key = objClass.getName();
if(beans.containsKey(key)){
return beans.get(key);
}
//查找XML文件中key等于謀值的bean標(biāo)簽
Object object = null ;
try {
Element elt = (Element)doc.selectObject("http://bean[@id=\"" + key +"\"]");
object = Class.forName(elt.attributeValue("class")).newInstance() ;
} catch (Exception e) {
beans.put(key, object);
}
return object ;
}
public static void main(String[] args) {
//System.out.println(BeanFactory.getInstance().getBean("com.yangweitao.drp.basedata.dao.ItemDao"));
}
}
xml文件:
?xml version="1.0" encoding="UTF-8"?
beans
!-- OCP 原則:對擴(kuò)展開發(fā),對修改關(guān)閉 --
bean id="com.yangweitao.drp.basedata.dao.ItemDao" class="com.yangweitao.drp.basedata.dao.ItemDao4OracleImpl"/bean
!--
bean id="itemDao" class="com.yangweitao.drp.basedata.dao.ItemDao4MySqlImpl"/bean
--
bean id="com.yangweitao.drp.basedata.manager.ItemService" class="com.yangweitao.drp.basedata.manager.ItemServiceImpl"/bean
/beans
java代碼采用單例讀取,測試的是 請導(dǎo)入相應(yīng)的jar包
public interface Italk {
public void talk(String msg);
} public class People implements Italk {
public String username;
public String age;
public String getName() {
return username;
}
public void setName(String name) {
this.username= name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public People(String name1, String age1) {
this.username= name1;
this.age = age1;
}
public void talk(String msg) {
System.out.println(msg+!你好,我是+username+,我年齡是+age);
}
} public class TalkProxy implements Italk {
Italk talker;
public TalkProxy (Italk talker) {
//super();
this.talker=talker;
}
public void talk(String msg) {
talker.talk(msg);
}
public void talk(String msg,String singname) {
talker.talk(msg);
sing(singname);
}
private void sing(String singname){
System.out.println(唱歌:+singname);
}
}
} public class MyProxyTest {
/**代理模式
* @param args
*/
public static void main(String[] args) {
//不需要執(zhí)行額外方法的
Italk people1=new People(湖海散人,18);
people1.talk(No ProXY Test);
System.out.println(-----------------------------);
//需要執(zhí)行額外方法的
TalkProxy talker=new TalkProxy(people1);
talker.talk(ProXY Test,七里香);
}
}
終止線程的三種方法:1. 使用退出標(biāo)志,使線程正常退出,也就是當(dāng)run方法完成后線程終止。 2. 使用stop方法強(qiáng)行終止線程(這個(gè)方法不推薦使用,因?yàn)閟top和suspend、resume一樣,也可能發(fā)生不可預(yù)料的結(jié)果)。3. 使用interrupt方法中斷線程。 1. 使用退出標(biāo)志終止線程 當(dāng)run方法執(zhí)行完后,線程就會(huì)退出。但有時(shí)run方法是永遠(yuǎn)不會(huì)結(jié)束的。如在服務(wù)端程序中使用線程進(jìn)行監(jiān)聽客戶端請求,或是其他的需要循環(huán)處理的任務(wù)。在這種情況下,一般是將這些任務(wù)放在一個(gè)循環(huán)中,如while循環(huán)。如果想讓循環(huán)永遠(yuǎn)運(yùn)行下去,可以使用while(true){……}來處理。但要想使while循環(huán)在某一特定條件下退出,最直接的方法就是設(shè)一個(gè)boolean類型的標(biāo)志,并通過設(shè)置這個(gè)標(biāo)志為true或false來控制while循環(huán)是否退出。下面給出了一個(gè)利用退出標(biāo)志終止線程的例子。
package chapter2; public class ThreadFlag extends Thread { public volatile boolean exit = false; public void run() { while (!exit); } public static void main(String[] args) throws Exception { ThreadFlag thread = new ThreadFlag(); thread.start(); sleep(5000); // 主線程延遲5秒 thread.exit = true; // 終止線程thread thread.join(); System.out.println("線程退出!"); } }
在上面代碼中定義了一個(gè)退出標(biāo)志exit,當(dāng)exit為true時(shí),while循環(huán)退出,exit的默認(rèn)值為false.在定義exit時(shí),使用了一個(gè)Java關(guān)鍵字volatile,這個(gè)關(guān)鍵字的目的是使exit同步,也就是說在同一時(shí)刻只能由一個(gè)線程來修改exit的值, 2. 使用stop方法終止線程 使用stop方法可以強(qiáng)行終止正在運(yùn)行或掛起的線程。我們可以使用如下的代碼來終止線程: thread.stop(); 雖然使用上面的代碼可以終止線程,但使用stop方法是很危險(xiǎn)的,就象突然關(guān)閉計(jì)算機(jī)電源,而不是按正常程序關(guān)機(jī)一樣,可能會(huì)產(chǎn)生不可預(yù)料的結(jié)果,因此,并不推薦使用stop方法來終止線程。 3. 使用interrupt方法終止線程 使用interrupt方法來終端線程可分為兩種情況: (1)線程處于阻塞狀態(tài),如使用了sleep方法。 (2)使用while(!isInterrupted()){……}來判斷線程是否被中斷。 在第一種情況下使用interrupt方法,sleep方法將拋出一個(gè)InterruptedException例外,而在第二種情況下線程將直接退出。下面的代碼演示了在第一種情況下使用interrupt方法。
package chapter2; public class ThreadInterrupt extends Thread { public void run() { try { sleep(50000); // 延遲50秒 } catch (InterruptedException e) { System.out.println(e.getMessage()); } } public static void main(String[] args) throws Exception { Thread thread = new ThreadInterrupt(); thread.start(); System.out.println("在50秒之內(nèi)按任意鍵中斷線程!"); System.in.read(); thread.interrupt(); thread.join(); System.out.println("線程已經(jīng)退出!"); } }
上面代碼的運(yùn)行結(jié)果如下: 在50秒之內(nèi)按任意鍵中斷線程! sleep interrupted 線程已經(jīng)退出! 在調(diào)用interrupt方法后, sleep方法拋出異常,然后輸出錯(cuò)誤信息:sleep interrupted. 注意:在Thread類中有兩個(gè)方法可以判斷線程是否通過interrupt方法被終止。一個(gè)是靜態(tài)的方法interrupted(),一個(gè)是非靜態(tài)的方法isInterrupted(),這兩個(gè)方法的區(qū)別是interrupted用來判斷當(dāng)前線是否被中斷,而isInterrupted可以用來判斷其他線程是否被中斷。因此,while (!isInterrupted())也可以換成while (!Thread.interrupted())。
以下是定義一元二次方程類、封裝系數(shù)及其求根方法的示例代碼:
public class Equation {
private double a;
private double b;
private double c;
// 封裝系數(shù)
public void setA(double a) {
this.a = a;
}
public double getA() {
return a;
}
public void setB(double b) {
this.b = b;
}
public double getB() {
return b;
}
public void setC(double c) {
this.c = c;
}
public double getC() {
return c;
}
// 求根方法
public void solve() {
double delta = b * b - 4 * a * c;
if (delta 0) {
double x1 = (-b + Math.sqrt(delta)) / (2 * a);
double x2 = (-b - Math.sqrt(delta)) / (2 * a);
System.out.println("方程的兩個(gè)解分別為:" + x1 + "和" + x2);
} else if (delta == 0) {
double x = -b / (2 * a);
System.out.println("方程的解為:" + x);
} else {
System.out.println("方程無解");
}
}
}
在main()方法中定義一個(gè)一元二次方程對象并調(diào)用求根方法,可以這樣寫:
public static void main(String[] args) {
// 創(chuàng)建一個(gè)一元二次方程對象
Equation eq = new Equation();
// 設(shè)置系數(shù)
eq.setA(1);
eq.setB(2);
eq.setC(1);
// 調(diào)用求根方法
eq.solve();
}
上面的代碼會(huì)輸出:方程的解為:-1.0。
很高興回答你的問題
希望對你有幫助
Java實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換二進(jìn)制的一段代碼0
1.復(fù)制代碼package work;
2.import java.util.*;
3.public class jinzhi{
4.public static void main(String[]args){
5.Scanner input=new Scanner(System.in);
6.int num; //聲明一個(gè)num變量用來存貯獲取鍵盤輸入的數(shù)值
7.int[] tnum=new int[10]; //聲明一個(gè)數(shù)組,用來存貯二進(jìn)制的每一位數(shù)字
8.System.out.print(\"請輸入一個(gè)100以內(nèi)的整數(shù):\");
9.num=input.nextInt(); //從鍵盤獲取數(shù)值
..
.. /*循環(huán),用來檢測輸入的數(shù)值是否大于100*/
while(num100){
System.out.print(\"數(shù)字不能大于100!重新輸入:\");
num=input.nextInt();
}
/*循環(huán)結(jié)束*/
int n=num; //聲明n變量用并賦值輸入的值
int x=0; //聲明x變量,用來控制數(shù)組
/*循環(huán),用來計(jì)算十進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù)后的每一位*/
while(n=1){
tnum[x]=n%2; //將結(jié)果逐一存貯在數(shù)組內(nèi)
n=n/2;
x++;
}
/*循環(huán)結(jié)束*/
System.out.print(num+\"轉(zhuǎn)換成二進(jìn)制是:\");
x--; //這里x變量需要“--”才能與數(shù)組標(biāo)簽匹配
/*for循環(huán)控制數(shù)組序列反轉(zhuǎn)輸出,從后往前*/
for(int i=x;i=0;i--){
System.out.print(tnum[i]);
}
/*循環(huán)結(jié)束*/
}
}