重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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("一个面纸、");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"+"总价为:"+"\n"+sum);}}}publicclassShopping{publicstaticvoidmain(String[]args){newShopFrame("购物车");}}我没用Swing可能显示不出来你的效果。不满意得话我在给你编一个。
目前创新互联公司已为超过千家的企业提供了网站建设、域名、网页空间、成都网站托管、企业网站设计、任城网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
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 ;
//存放产品{key: 产品编号 value:具体产品}
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文件失败");
}
}
/**
* 获得实例
* @return
*/
public static BeanFactory getInstance(){
if(instance == null){
instance = new BeanFactory () ;
}
return instance ;
}
// /**
// * 根据产品标识(id)得到产品 必须是同步的,因为会产生线程安全问题
// * @param id
// * @return
// */
// public synchronized Object getBean(String key){
//
// if(beans.containsKey(key)){
// return beans.get(key);
// }
// //查找XML文件中key等于谋值的bean标签
// Object object = null ;
// try {
// Element elt = (Element)doc.selectObject("//bean[@id=\"" + key +"\"]");
// object = Class.forName(elt.attributeValue("class")).newInstance() ;
// } catch (Exception e) {
// beans.put(key, object);
// }
// return object ;
// }
/**
* 根据产品标识(id)得到产品 必须是同步的,因为会产生线程安全问题
* @param id
* @return
*/
public synchronized Object getBean(Class objClass){
String key = objClass.getName();
if(beans.containsKey(key)){
return beans.get(key);
}
//查找XML文件中key等于谋值的bean标签
Object object = null ;
try {
Element elt = (Element)doc.selectObject("//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 原则:对扩展开发,对修改关闭 --
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代码采用单例读取,测试的是 请导入相应的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) {
//不需要执行额外方法的
Italk people1=new People(湖海散人,18);
people1.talk(No ProXY Test);
System.out.println(-----------------------------);
//需要执行额外方法的
TalkProxy talker=new TalkProxy(people1);
talker.talk(ProXY Test,七里香);
}
}
终止线程的三种方法:1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。3. 使用interrupt方法中断线程。 1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端程序中使用线程进行监听客户端请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。如果想让循环永远运行下去,可以使用while(true){……}来处理。但要想使while循环在某一特定条件下退出,最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或false来控制while循环是否退出。下面给出了一个利用退出标志终止线程的例子。
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("线程退出!"); } }
在上面代码中定义了一个退出标志exit,当exit为true时,while循环退出,exit的默认值为false.在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值, 2. 使用stop方法终止线程 使用stop方法可以强行终止正在运行或挂起的线程。我们可以使用如下的代码来终止线程: thread.stop(); 虽然使用上面的代码可以终止线程,但使用stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程。 3. 使用interrupt方法终止线程 使用interrupt方法来终端线程可分为两种情况: (1)线程处于阻塞状态,如使用了sleep方法。 (2)使用while(!isInterrupted()){……}来判断线程是否被中断。 在第一种情况下使用interrupt方法,sleep方法将抛出一个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秒之内按任意键中断线程!"); System.in.read(); thread.interrupt(); thread.join(); System.out.println("线程已经退出!"); } }
上面代码的运行结果如下: 在50秒之内按任意键中断线程! sleep interrupted 线程已经退出! 在调用interrupt方法后, sleep方法抛出异常,然后输出错误信息:sleep interrupted. 注意:在Thread类中有两个方法可以判断线程是否通过interrupt方法被终止。一个是静态的方法interrupted(),一个是非静态的方法isInterrupted(),这两个方法的区别是interrupted用来判断当前线是否被中断,而isInterrupted可以用来判断其他线程是否被中断。因此,while (!isInterrupted())也可以换成while (!Thread.interrupted())。
以下是定义一元二次方程类、封装系数及其求根方法的示例代码:
public class Equation {
private double a;
private double b;
private double c;
// 封装系数
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("方程的两个解分别为:" + x1 + "和" + x2);
} else if (delta == 0) {
double x = -b / (2 * a);
System.out.println("方程的解为:" + x);
} else {
System.out.println("方程无解");
}
}
}
在main()方法中定义一个一元二次方程对象并调用求根方法,可以这样写:
public static void main(String[] args) {
// 创建一个一元二次方程对象
Equation eq = new Equation();
// 设置系数
eq.setA(1);
eq.setB(2);
eq.setC(1);
// 调用求根方法
eq.solve();
}
上面的代码会输出:方程的解为:-1.0。
很高兴回答你的问题
希望对你有帮助
Java实现十进制转换二进制的一段代码0
1.复制代码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; //声明一个num变量用来存贮获取键盘输入的数值
7.int[] tnum=new int[10]; //声明一个数组,用来存贮二进制的每一位数字
8.System.out.print(\"请输入一个100以内的整数:\");
9.num=input.nextInt(); //从键盘获取数值
..
.. /*循环,用来检测输入的数值是否大于100*/
while(num100){
System.out.print(\"数字不能大于100!重新输入:\");
num=input.nextInt();
}
/*循环结束*/
int n=num; //声明n变量用并赋值输入的值
int x=0; //声明x变量,用来控制数组
/*循环,用来计算十进制转换为二进制数后的每一位*/
while(n=1){
tnum[x]=n%2; //将结果逐一存贮在数组内
n=n/2;
x++;
}
/*循环结束*/
System.out.print(num+\"转换成二进制是:\");
x--; //这里x变量需要“--”才能与数组标签匹配
/*for循环控制数组序列反转输出,从后往前*/
for(int i=x;i=0;i--){
System.out.print(tnum[i]);
}
/*循环结束*/
}
}