「java编程买票问题」java高铁购票程序代码教学

博主:adminadmin 2022-12-23 06:00:10 59

本篇文章给大家谈谈java编程买票问题,以及java高铁购票程序代码教学对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

小弟急求一个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编程买票问题的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。