java编程实现景区售票规则:成人票每人10元,儿童票折半(如果儿童身高不超过1.2

java编程实现景区售票规则:成人票每人10元,儿童票折半(如果儿童身高不超过1.2,第1张

这个规则就是设计一个方法,该方法最后值为一个票价,参数应该是身高,所以有如下代码

public class PriceTest {

    public static void 首态余闭念main(String[] args) {

        int childPrice = getPrice(1.2)

        int adultPrice = getPrice(1.5)

        System.out.println("1.2米身高的票价为:"+childPrice)

        System.out.println("1.5米身高的成人票价为:"+adultPrice)

    }

    private 者滚static int getPrice(double height) {

        return height > 1.2?10:5

    }

}

最后结果如下:

package yaoshun.Thread

import java.awt.Color

import java.awt.Font

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JTextArea

/*

* 多线程同宽尺步输出

*/

public class MultiThread extends JFrame {

private int ticket// 计数变量

private JButton jButton

private JLabel jLabel

private JLabel jLabel1

private JLabel jLabel2

private JLabel jLabel3

private JLabel jLabel4

private JLabel jLabel5

private JTextArea jTextArea1

private JTextArea jTextArea2

private JTextArea jTextArea3

private JTextArea jTextArea4

private JTextArea jTextArea5

private Thread thread1

private Thread thread2

private Thread thread3

private Thread thread4

private Thread thread5

// 构造器

public MultiThread() {

setName("火车票销售情况")

setLayout(null)// 使用绝对布局

setSize(680, 720)

setResizable(false)// 设置窗体大小不变

setLocationRelativeTo(null)// 设置窗体居中

jLabel = new JLabel("火车站售票大厅")

jLabel.setBounds(280, 20, 140, 30)

jLabel.setFont(new Font(getName(), Font.BOLD, 16))// 设置字体大小雀嫌

jLabel.setForeground(Color.BLUE)// 设慎岁高置字体颜色

jLabel1 = new JLabel("售票窗1")

jLabel1.setBounds(72, 50, 80, 50)

jLabel1.setForeground(Color.red)

jLabel2 = new JLabel("售票窗2")

jLabel2.setBounds(192, 50, 80, 50)

jLabel2.setForeground(Color.red)

jLabel3 = new JLabel("售票窗3")

jLabel3.setBounds(312, 50, 80, 50)

jLabel3.setForeground(Color.red)

jLabel4 = new JLabel("售票窗4")

jLabel4.setBounds(432, 50, 80, 50)

jLabel4.setForeground(Color.red)

jLabel5 = new JLabel("售票窗5")

jLabel5.setBounds(552, 50, 80, 50)

jLabel5.setForeground(Color.red)

jTextArea1 = new JTextArea()

jTextArea1.setBounds(45, 100, 100, 500)

jTextArea1.setEditable(false)// 文本框不可编辑

jTextArea2 = new JTextArea()

jTextArea2.setBounds(165, 100, 100, 500)

jTextArea2.setEditable(false)// 文本框不可编辑

jTextArea3 = new JTextArea()

jTextArea3.setBounds(285, 100, 100, 500)

jTextArea3.setEditable(false)// 文本框不可编辑

jTextArea4 = new JTextArea()

jTextArea4.setBounds(405, 100, 100, 500)

jTextArea4.setEditable(false)// 文本框不可编辑

jTextArea5 = new JTextArea()

jTextArea5.setBounds(525, 100, 100, 500)

jTextArea5.setEditable(false)// 文本框不可编辑

jButton = new JButton("开始售票")

jButton.setBounds(270, 625, 140, 40)

jButton.setFont(new Font(getName(), Font.BOLD, 16))// 设置字体

jButton.setForeground(Color.blue)

thread1 = new Thread(new MyThread1())

thread2 = new Thread(new MyThread2())

thread3 = new Thread(new MyThread3())

thread4 = new Thread(new MyThread4())

thread5 = new Thread(new MyThread5())

// 为按钮添加监听器

jButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

thread1.start()

thread2.start()

thread3.start()

thread4.start()

thread5.start()

}

})

add(jLabel)

add(jLabel1)

add(jLabel2)

add(jLabel3)

add(jLabel4)

add(jLabel5)

add(jTextArea1)

add(jTextArea2)

add(jTextArea3)

add(jTextArea4)

add(jTextArea5)

add(jButton)

setVisible(true)// 设置窗体显示

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)// 设置窗体关闭

}

class MyThread1 extends Thread {

// 重写run方法

public synchronized void run() {

while (ticket <100) {

++ticket

jTextArea1.append("第" + ticket + "张票已售出" + "\n")

try {

Thread.sleep(100)

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace()

}

}

}

}

class MyThread2 extends Thread {

// 重写run方法

public synchronized void run() {

while (ticket <100) {

++ticket

jTextArea2.append("第" + ticket + "张票已售出" + "\n")

try {

Thread.sleep(100)

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace()

}

}

}

}

class MyThread3 extends Thread {

// 重写run方法

public synchronized void run() {

while (ticket <100) {

++ticket

jTextArea3.append("第" + ticket + "张票已售出" + "\n")

try {

Thread.sleep(100)

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace()

}

}

}

}

class MyThread4 extends Thread {

// 重写run方法

public synchronized void run() {

while (ticket <100) {

++ticket

jTextArea4.append("第" + ticket + "张票已售出" + "\n")

try {

Thread.sleep(100)

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace()

}

}

}

}

class MyThread5 extends Thread {

// 重写run方法

public synchronized void run() {

while (ticket <100) {

++ticket

jTextArea5.append("第" + ticket + "张票已售出" + "\n")

try {

Thread.sleep(200)

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace()

}

}

}

}

public static void main(String[] args) {

MultiThread multiThread = new MultiThread()

}

}

自己改一下 包名吧,这个题目是很多学校在多线程都用来的基础练习题。

public class SoldThread extends Thread {

public static int count = 10000

@Override

public  void run() {

super.run()

synchronized(SoldThread.class){

count = count - 100

System.out.println("买票成功,剩余票数" + count)}

}

} for (int i = 0 i < 100 i++) {

SoldThread sold = new SoldThread()

sold.start()

}

这是同步代码块的,至于同步方法的,不适用于这种情况。因为同步代码块我用的SoldThread这个类当锁,而同步方法的,使用的是对象当锁,所以我建立了100个对象,锁相当于无用。

输出:

买票成功,剩余票数9900

买票成功,剩余票数9800

买票成功,剩余票数9700

买票成功,剩余票数9600

买票成功,剩余票数9500

买票成功,剩余票数9400

买票成功,剩余票数9300

买票成功,剩余票数9200

买票成功,剩余票数9100

买票成功,剩余票数9000

买票成功,剩余票数8900

买票成功,剩余票数8800

买票成功,剩余票数8700

买票成功,剩余票数8600

买票成功,剩余票数8500

买票成功,剩余票数8400

买票成功,剩余票数8300

买票成功,剩余票数8200

买票成功,剩余票数8100

买票成功,剩余票数8000

买票成功,剩余票数7900

买票成功,剩余票数7800

买票成功,剩余票数7700

买票成功,剩余票数7600

买票成功,剩余票数7500

买票成功,剩余票数7400

买票成功,剩余票数7300

买票成功,剩余凳枣票数7200

买票成功,剩余票数7100

买票成功,剩余票数7000

买票成功,剩余票数6900

买票成功,剩余票数6800

买票成功,剩余票数6700

买票成功,剩余票数6600

买票成功,剩余票数6500

买票成功,剩余票数6400

买票成功,剩余票数6300

买票成功,剩余票数6200

买票成功,剩余票数6100

买票成功,剩余票枣贺拆数6000

买票成功,剩余票数5900

买票成功,剩余票数5800

买票成功,剩余票数5700

买票成功,剩余票数5600

买票成功,剩余票数5500

买票成功,剩余票数5400

买票成功,剩余票数5300

买票成功,剩余票数5200

买票成功,剩余票数5100

买票成功,剩余票数5000

买票成功,剩余票数4900

买票成功,剩余票数4800

买票成功,剩余票数4700

买票成功,剩余票数4600

买票成功,剩余票数4500

买票成功,剩余票数4400

买票成功,剩余票数4300

买票成功,剩余票数4200

买票成功,剩余票数4100

买票成功,剩余票数4000

买票成功,剩余票数3900

买票成功,剩余票数3800

买票成功,剩余票数3700

买票成功,剩余票数3600

买票成功,剩余票数3500

买票成功,剩余票数3400

买票成功,剩余票数3300

买票成功,剩余票数3200

买票成功,剩余票数3100

买票成功,剩余票数3000

买票成功,剩余票数2900

买票成功,剩余票数2800

买票成功,剩余票数2700

买票成功,剩余票数2600

买票成功,剩余票数2500

买票成拍游功,剩余票数2400

买票成功,剩余票数2300

买票成功,剩余票数2200

买票成功,剩余票数2100

买票成功,剩余票数2000

买票成功,剩余票数1900

买票成功,剩余票数1800

买票成功,剩余票数1700

买票成功,剩余票数1600

买票成功,剩余票数1500

买票成功,剩余票数1400

买票成功,剩余票数1300

买票成功,剩余票数1200

买票成功,剩余票数1100

买票成功,剩余票数1000

买票成功,剩余票数900

买票成功,剩余票数800

买票成功,剩余票数700

买票成功,剩余票数600

买票成功,剩余票数500

买票成功,剩余票数400

买票成功,剩余票数300

买票成功,剩余票数200

买票成功,剩余票数100

买票成功,剩余票数0


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12468715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存