Xylitollllll 2021-12-26 23:44 采纳率: 0%
浏览 44

Java程序没有语法错误,给的数值一旦较大,便运行不出结果;


import java.util.*;
public class t发牌器 {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Card bt=new Card("黑桃");
        System.out.println("how many cards you want?(<13)");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        bt.distribute(n);
        
    }

}
class Card{
    String number[]= {"null","A","J","Q","K","2","3","4","5","6","7","8"
            ,"9","10"};//number[0]为空;
    String c;
    public Card(String c) {//构造函数,定义牌的种类
        this.c=c;
    }
    public void distribute(int n) {
        Random rand=new Random();
        int index[]=new int[n];//用于存入number数组的下标,默认值为0
        int count=0;//index数组的下标
        int flag=1;//判断是否重复,重复为0
        while(true){
            int r=rand.nextInt(13)+1;//获得1-14间的随机整数
            for(int i=0;i<n;i++){//该循环判断是否重复,重复则跳出循环并执行下面的代码
                if(r==index[i]) {
                    flag=0;break;
                }
            }
            if(flag==1) {
                index[count]=r;//将随机数覆盖index数组
                count++;
            }
            if(index[n-1]!=0) {//index最后一个被覆盖时,结束循环
                break;
            }
        }
        for(int i=0;i<n;i++) {
            System.out.print(c+number[index[i]]+" ");
        }
    }
}

给定的n比较大时,程序便一直处于运行中,不出结果;
希望能在原来的基础上改良代码;

  • 写回答

3条回答 默认 最新

  • 关注

    判断重复应该循环conut次,修改一下

    for(int i=0;i<n;i++){
    改为
    for(int i=0;i<count;i++){
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 1月3日
  • 创建了问题 12月26日

悬赏问题

  • ¥20 关于c++的问题 如何用qt完成
  • ¥15 台达变频器MS300与伺服驱动器B3系列的抱闸与电路设计如何实现
  • ¥20 C++通过HICON获取argb像素数组
  • ¥15 如何利用支持向量机提高分类器正确率和筛选理想分类器
  • ¥15 Pygame坦克大战游戏开发实验报告
  • ¥15 用vmmare虚拟机用sentaurus仿真的时候,调用terminal程序,输入swb指令弹出这个,打不开workbench,桌面上面的sentaurus workbench也打不开
  • ¥75 使用winspool.drv的SetPrinter设置打印机失败
  • ¥15 simulink 硬件在环路仿真
  • ¥15 python动态规划:N根火柴摆出的最大数字
  • ¥20 (标签-excel)