「java编程买票问题」java高铁购票程序代码教学
本篇文章给大家谈谈java编程买票问题,以及java高铁购票程序代码教学对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、小弟急求一个JAVA编程答案(有运行结果)?不胜感激!
- 2、java编程:简单的售票系统问题
- 3、Java编程问题
- 4、java 编程问题
- 5、java多线程问题:模拟10个人在3个窗口买票的过程
小弟急求一个JAVA编程答案(有运行结果)?不胜感激!
package study.my;
public class TicketSell {
/**
* @param args
* 多线程的同步控制与线程间的通信:
* 用synchronized、wait()和notifyAll()完成以下情景
* 模拟3个人排队买票,每人买一张票。售票员(TicketSeller类)只有1张5元的钱,电影票5元一张。
* 张某拿着1张20元的人民币排在第一,孙某拿着1张10元的人民币排在第二,赵某拿着1张5元的人民币排在第三。
* (提示:定义一个售票员TicketSeller类,属性包括5元钱张数fiveNumber、
* 10元钱张数tenNumber和20元钱张数twentyNumber,方法为同步方法卖票
* sellTicket(int receiveMoney), 创建三个线程张某Zhang、孙某Sun和赵某Zhao,
* 这三个线程共享一个售票员类对象。)
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("售票员: 现在开始售票,开放时间:10秒钟!");
Thread zhang = new Thread(new Zhang());
zhang.start();
Thread sun = new Thread(new Sun());
sun.start();
Thread zhao = new Thread(new Zhao());
zhao.start();
try
{
Thread.sleep(10000);//主线程挂起10秒
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("售票员: 今天的售票时间已过,请没有买到票的通知明天再来!");
if(zhang.isAlive())
{
zhang.stop();//如果thread1还存在则杀掉他
System.out.println("张先生: 我没有买到票,明天再来吧!");
}
else
System.out.println("张先生: 我买到票了!");
if(sun.isAlive())
{
sun.stop();//如果thread1还存在则杀掉他
System.out.println("孙小姐: 我没有买到票,明天再来吧!");
}
else
System.out.println("孙小姐: 我买到票了!");
if(zhao.isAlive())
{
zhao.stop();//如果thread1还存在则杀掉他
System.out.println("赵老师: 我没有买到票,明天再来吧!");
}
else
System.out.println("赵老师: 我买到票了!");
}
}
class TicketSeller{
private static int fiveNumber = 1;
private static int tenNumber = 0;
private static int twentyNumber = 0;
public static boolean sellTicket(int receiveMoney){
if(receiveMoney fiveNumber*5+tenNumber*10+twentyNumber*20+5){
System.out.println("售票员: 对不起,您的钱面值太大,找不开,请稍等!");
return false;
}
else if(receiveMoney 5)
{
System.out.println("售票员: 对不起,您的钱金额不足,请带足了再来!");
return false;
}
else{
if(receiveMoney == 5){
fiveNumber = fiveNumber +1;
System.out.println("售票员: 收您5元,这是您的票,请您收好!");
return true;
}
else if(receiveMoney == 10 fiveNumber 0)
{
fiveNumber = fiveNumber - 1;
tenNumber = tenNumber + 1;
System.out.println("售票员: 收您10元,找您5元,这是找您的钱和您的票,请您收好!");
return true;
}
else if(receiveMoney == 20 fiveNumber 0 tenNumber 0){
twentyNumber = twentyNumber + 1;
fiveNumber = fiveNumber - 1;
tenNumber = tenNumber - 1;
System.out.println("售票员: 收您20元,找您15元,这是找您的钱和您的票,请您收好!");
return true;
}
return false;
}
}
}
class Zhang implements Runnable {
boolean isGetTicket = false;
Zhang()
{
}
public synchronized void run()
{
while(!isGetTicket){
System.out.println("张先生: 我要买票,这是20元!");
if(TicketSeller.sellTicket(20)){
System.out.println("张先生: 谢谢您。");
isGetTicket = true;
}else{
System.out.println("张先生: 没关系,我去等待2秒!");
System.out.println("售票员: 下一个!");
try
{
Thread.sleep(2000);//挂起2秒
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
class Sun implements Runnable {
boolean isGetTicket = false;
Sun()
{
}
public synchronized void run()
{
while(!isGetTicket){
System.out.println("孙小姐: 我要买票,这是10元!");
if(TicketSeller.sellTicket(10)){
System.out.println("孙小姐: 谢谢您!");
isGetTicket = true;
}else{
System.out.println("孙小姐: 没关系,我去等待1秒!");
System.out.println("售票员: 下一个!");
try
{
Thread.sleep(1000);//挂起1秒
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
class Zhao implements Runnable {
boolean isGetTicket = false;
Zhao(){
}
public synchronized void run()
{
while(!isGetTicket){
System.out.println("赵老师: 我要买票,这是5元!");
if(TicketSeller.sellTicket(5)){
System.out.println("赵老师: 谢谢您!");
isGetTicket = true;
}else{
System.out.println("赵老师: 没关系,我去等待一下!");
System.out.println("售票员: 下一个!");
try
{
Thread.sleep(500);//挂起1秒
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
售票员: 现在开始售票,开放时间:10秒钟!
张先生: 我要买票,这是20元!
售票员: 对不起,您的钱面值太大,找不开,请稍等!
张先生: 没关系,我去等待2秒!
售票员: 下一个!
孙小姐: 我要买票,这是10元!
售票员: 收您10元,找您5元,这是找您的钱和您的票,请您收好!
孙小姐: 谢谢您!
赵老师: 我要买票,这是5元!
售票员: 收您5元,这是您的票,请您收好!
赵老师: 谢谢您!
张先生: 我要买票,这是20元!
售票员: 收您20元,找您15元,这是找您的钱和您的票,请您收好!
张先生: 谢谢您。
售票员: 今天的售票时间已过,请没有买到票的通知明天再来!
张先生: 我买到票了!
孙小姐: 我买到票了!
赵老师: 我买到票了!
java编程:简单的售票系统问题
你的不是调试的问题 是错 通过编译了 但是你想实现的没有 很多错误抛出了 。。。
Java编程问题
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int y = scan.nextInt();
for (int i = 1; i = 4; i++) {
for (int j = 1; j = 4; j++) {
if (i == x j == y)
System.out.print("@");
else
System.out.print("*");
}
System.out.println("");
}
}
java 编程问题
方法类:
package test;
public class LineTotaller
{
private String line;
public LineTotaller()
{
setLine("");
}
public LineTotaller(String s)
{
}
public void setLine(String s)
{
this.line=s;
}
public int getSum()
{
int total = 0;
String arr[]=line.split(" ");
for( String ss:arr )
{
int i = Integer.valueOf(ss);
total+=i;
}
return total;
}
public double getAverage()
{
double average=0.0;
String arr[]=line.split(" ");
average = getSum()/Double.valueOf(arr.length);
Integer temp = Double.valueOf(average*1000).intValue();
average = temp/1000d;
return average;
}
public String getLine()
{
return line;
}
public String toString()
{
return getLine();
}
}
测试类
package test;
import java.util.Scanner;
public class Lab12b {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一组数字以空格分隔:");
LineTotaller lt = new LineTotaller();
String ss=input.nextLine();
lt.setLine(ss);
System.out.println(lt);
System.out.println("sum="+lt.getSum());
System.out.println("average"+lt.getAverage());
}
}
java多线程问题:模拟10个人在3个窗口买票的过程
public class TicketsSystem {
public static void main(String[] args) {
SellThread st = new SellThread();
Thread th1 = new Thread(st);
th1.start();
Thread th2 = new Thread(st);
th2.start();
Thread th3 = new Thread(st);
th3.start();
}
}
class SellThread implements Runnable {
private int number=10;
String s = new String();
public void run() {
while (number 0) {
synchronized (s) {
System.out.println("第" + number + "个人在"
+ Thread.currentThread().getName() + "买票");
}
number--;
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
synchronized (s)的s是synchronized 的参数,synchronized 的参数可以是任意对象,我定义了一个String类型的对象s,方便看程序而已。
但是要注意,s的定义一定要在run方法之外,不然还会出现负数。因为你启动了3个线程,每个线程都调用了run方法,在每个线程就会在run方法里边产生自己的s对象,一共会产生3个,达不到同步的目的。
如果还有不明白的,可以继续问。
java编程买票问题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java高铁购票程序代码教学、java编程买票问题的信息别忘了在本站进行查找喔。
发布于:2022-12-23,除非注明,否则均为
原创文章,转载请注明出处。