java生成7位随机券码,java生成字母首位8位随机码

public String getRedomchar(){

String[] char1 = new String[] { "a", "b", "c", "d", "e", "f",

"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",

"t", "u", "v", "w", "x", "y", "z", "0", "A", "B", "C", "D", "E", "F", "G", "H", "I",

"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",

"W", "X", "Y", "Z"};

String[] chars = new String[] { "a", "b", "c", "d", "e", "f",

"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",

"t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "5",

"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",

"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",

"W", "X", "Y", "Z","!", "@", "#", "$", "%", "^", "&", "*", "(", ")",

"_", "+", "-","=","`","~",",",".","","/","?",":",";","'","\","。","|"};

StringBuffer shortBuffer = new StringBuffer();

String random = "";

int index1 = (int) (Math.random() * char1.length);

random = char1[index1];

shortBuffer.append(random);

LogUtil.writeLog("第一个字母:"+shortBuffer);

for (int i = 1; i <=7; i++) {

int index = (int) (Math.random() * chars.length);

random = chars[index];

shortBuffer.append(random);

}

LogUtil.writeLog("拼成后的8个随机码:"+shortBuffer);

String suffix = shortBuffer.toString();

return suffix;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Java Swing实现的多窗口卖票程序,满足您的要求: ```java import javax.swing.*; import java.awt.*; import java.util.Random; public class TicketSales { private static final int WINDOW_COUNT = 2; private static final int TICKET_COUNT = 100; private static final int SELL_INTERVAL = 1000; // 单:毫秒 private static final String NAME_PREFIX = "WY 1 131 1"; // 口口名称前缀,根据个人情况修改 private JFrame frame; private JLabel[] nameLabel; private JLabel[] ticketLabel; private JLabel[] soldLabel; private JButton autoButton; private int[] ticketCountArray; private int sumTicketCount; private Random random; public TicketSales() { // 初始化票数和随机对象 ticketCountArray = new int[WINDOW_COUNT]; random = new Random(); // 创建窗口界面 frame = new JFrame("多窗口卖票程序"); frame.setSize(600, 400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建卖票口和对应的显示区域 nameLabel = new JLabel[WINDOW_COUNT]; ticketLabel = new JLabel[WINDOW_COUNT]; soldLabel = new JLabel[WINDOW_COUNT]; JPanel panel = new JPanel(new GridLayout(WINDOW_COUNT, 3)); for (int i = 0; i < WINDOW_COUNT; i++) { nameLabel[i] = new JLabel(NAME_PREFIX + (i + 1)); ticketLabel[i] = new JLabel("票数:" + TICKET_COUNT); soldLabel[i] = new JLabel("已售:" + ticketCountArray[i]); panel.add(nameLabel[i]); panel.add(ticketLabel[i]); panel.add(soldLabel[i]); } frame.add(panel, BorderLayout.CENTER); // 创建自动按钮 autoButton = new JButton("自动"); autoButton.addActionListener(e -> { // 禁用自动按钮 autoButton.setEnabled(false); // 重置票数和总售票数 for (int i = 0; i < WINDOW_COUNT; i++) { ticketCountArray[i] = 0; soldLabel[i].setText("已售:" + ticketCountArray[i]); } sumTicketCount = 0; // 计算自口分配的票数 int lastThreeDigits = Integer.parseInt(NAME_PREFIX.substring(NAME_PREFIX.length() - 3)); int selfTicketCount = lastThreeDigits % WINDOW_COUNT; int remainingTicketCount = TICKET_COUNT - selfTicketCount; ticketCountArray[0] = selfTicketCount; sumTicketCount += selfTicketCount; for (int i = 1; i < WINDOW_COUNT; i++) { int randomTicketCount = random.nextInt(remainingTicketCount + 1); ticketCountArray[i] = randomTicketCount; sumTicketCount += randomTicketCount; remainingTicketCount -= randomTicketCount; } // 创建销售线程 Thread[] threads = new Thread[WINDOW_COUNT]; for (int i = 0; i < WINDOW_COUNT; i++) { int windowIndex = i; threads[i] = new Thread(() -> { while (ticketCountArray[windowIndex] > 0) { try { // 随机生成卖出的票数 int soldTicketCount = random.nextInt(ticketCountArray[windowIndex] + 1); ticketCountArray[windowIndex] -= soldTicketCount; sumTicketCount -= soldTicketCount; // 更新界面显示 soldLabel[windowIndex].setText("已售:" + (TICKET_COUNT - ticketCountArray[windowIndex])); frame.setTitle("总售票数:" + (TICKET_COUNT - sumTicketCount)); // 等待指定时间间隔 Thread.sleep(SELL_INTERVAL); } catch (InterruptedException ex) { ex.printStackTrace(); } } }); threads[i].start(); } // 等待销售线程结束 for (int i = 0; i < WINDOW_COUNT; i++) { try { threads[i].join(); } catch (InterruptedException ex) { ex.printStackTrace(); } } // 启用自动按钮 autoButton.setEnabled(true); }); frame.add(autoButton, BorderLayout.SOUTH); // 显示窗口 frame.setVisible(true); } public static void main(String[] args) { new TicketSales(); } } ``` 在该程序中,我们使用了一个JFrame作为窗口界面,并在窗口中创建了多个卖票口和对应的显示区域。我们使用了一个ticketCountArray数组来记录每个窗口的票数和已售票数,并在每个窗口线程中随机生成每次卖出的票数,并更新该窗口的已售票数和总体进度显示。我们还使用了Java定时器来控制每次卖票的时间间隔,确保每个窗口之间的卖票不少于1秒。最后,我们在界面上添加了一个“自动”按钮,用于启动买票行为。当用户点击该按钮后,所有窗口线程开始执行卖票操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值