重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在synchronized(str) 里加一句 if(ticket 0) //判断是否有余票,没有余票还卖什么?
十载建站经验, 成都网站设计、成都网站制作客户的见证与正确选择。创新互联建站提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
也就是这样:
package socket;
public class Test
{
public static void main(String [] args)
{
TestThread tt=new TestThread();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
}
}
class TestThread implements Runnable
{
int ticket=10;
String str=" ";
public void run()
{
while(ticket0)
{
synchronized(str)
{
if(ticket 0 ) {
System.out.println(Thread.currentThread().getName()+":ticket "+ticket+" is saling");
ticket--;
}
}
}
}
}
你的while循环只是超出票数的循环,在同步里面还要有判断是否有票的条件.因为里面同步的时候除了一个线程在执行外,其它几个都在等待,而此时并没有跳出循环,当然会出现负数了.
当然把while判断放到同步代码里面去也可以.不过这样就没有超出票数的判断了,实际应用中应该有个超出票数的判断.. 例如 :for(int i=0;i100;i++) //同步检测 只有5张票,显示100张,实际上卖出的还是5张..用来检测同步是否正确...
数据的获取,查资料看看,
可以用jdbc连接数据库,
可以用hibernate,ibatis 等框架连接数据库
先查到数据
然后你再查swing jframe 的用法 ,根据jframe需要的参数封装好数据
首先数组piao1必须定义好值但含义,比如初始化后默认都是0,那么你可以认为0表示邮票,改变值为1后认为是无票即可。
另外,可以将其中一些方法提取出来使得代码更清晰
import java.util.Scanner;
public class Shoupiao {
public static void main(String[] args) {
System.out.println("\t简单的售票系统");
int piao1[][] = new int[9][4];
printPiao(piao1);// 打印票数据
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("输入坐标售票后回车,如: 1,1,退出轻按q,重置轻按r");
String zuobiaoStr = sc.nextLine();
if (zuobiaoStr.equals("q")) {
break;
}
if (zuobiaoStr.equals("r")) {
resetPiao(piao1);
printPiao(piao1);
continue;
}
String[] zuobiaoArray = zuobiaoStr.split(",");
if (zuobiaoArray.length == 2) {
try {
int x = Integer.parseInt(zuobiaoArray[0].trim());
int y = Integer.parseInt(zuobiaoArray[1].trim());
piao1[x][y] = 1;
printPiao(piao1);
} catch (Exception e) {
System.out.println("输入的坐标有误,请注意格式");
}
} else {
System.out.println("未能识别坐标或命令");
}
}
}
private static void resetPiao(int[][] piao1) {
for (int i = 0; i piao1.length; i++) {
for (int j = 0; j piao1[i].length; j++) {
piao1[i][j] = 0;
}
}
}
private static void printPiao(int[][] piao1) {
for (int i = 0; i piao1.length; i++) {
for (int j = 0; j piao1[i].length; j++) {
int piao = piao1[i][j];
if (piao == 0) {
System.out.print("有票\t");
} else {
System.out.print("已售\t");
}
}
System.out.println();
}
}
}
可以通过百度Hi通知我
有时间可以解决你的问题
相近的要求也可以通知我
要一个JAVA****程序~火车票订票**
ES:\\D154D65A8D5BBB6380B8BA414D180D1C
你说的这个程序应该是不难的,只不过N久没有写过javaswing 了
还有就是java没有多继承的,只有多实现接口的
继承的关键字是:extends
接口的关键字是:interface