• Java随堂题目 试一试


    1、 如有唐诗
        锄禾日当午
        汗滴禾下土
        谁知盘中餐
        粒粒皆辛苦

      要求:将这首唐诗按照古文样式输出,输出格式如下:
        粒谁汗锄
        粒知滴禾
        皆盘禾日
        辛中下当
        苦餐土午

    import java.util.*;
    public class java02 {
    
        public static void main(String[] args) {
            
                    //定义二维数组
            char[][] a = {{'锄','禾','日','当','午'},{'汗','滴','禾','下','土',},{'谁','知','盘','中','餐'},{'粒','粒','皆','辛','苦'}};
            
                    //输出原唐诗
            for(int i=0;i<4;i++)
            {
                for(int j=0;j<5;j++)
                {
                    System.out.print(a[i][j]);
                }
                System.out.println();//换行
            }
    
            System.out.println();//换行
    
                    //输出诗的古文样式
            for(int j=0;j<5;j++)
            {
                for(int i=3;i>=0;i--)
                {
                    System.out.print(a[i][j]);
                }
                System.out.println();//换行
            }
            
        }
    
    }                                                                                                                

    运行结果:

    2、要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示。如某位置为地雷,则该位置用数字1表示,
      如该位置不是地雷,则暂时用数字0表示。
      编写程序完成在该二维数组中随机布雷的操作,程序读入3个参数:布雷面板的行数(r),列数(c),布置的地雷个数(n),
      且要满足0<n<r*c*0.75(即布置地雷的最大密度为75%),程序运行后将n个地雷随机地布置在r*c的二维数组

    为了方便检测,将三个数均设为随机数:

    import java.util.*;
    public class java01 {
    
        public static void main(String[] args) {
            
            Random rnd = new Random();
            
                    //随机输出行r、列c、雷数n
            int r = (int)(rnd.nextDouble()*20)+1;
            int c = (int)(rnd.nextDouble()*20)+1;
            int n = (int)(rnd.nextDouble()*r*c*0.75);
            System.out.println(r+" "+c+" "+n);
            
                    //定义二维数组
            int[][] a = new int[r][c];
    
            for(int i=0;i<r;i++)
            {
                for(int j=0;j<c;j++)
                {
                                    //将0/1随机插入数组
                    a[i][j]=(int)(rnd.nextDouble()*3-1);
                    if(a[i][j]==1)
                        n--;
                    if(n==0)
                        break;
                    System.out.print(a[i][j]+" ");
                
                }            
                System.out.println();
            }
            System.out.println();
        }
    
    }                                                                                                                                                                                                                                                                                                                                                        

    *这种写法会出现以下几个问题:

      1、雷数出现0,但仍有雷

      2、雷数明显不够

      3、形状不规则

    改写代码后:

    import java.util.*;
    public class java01 {
    
        public static void main(String[] args) {
            
            Random rnd = new Random();
            
            int r = (int)(rnd.nextDouble()*20)+1;
            int c = (int)(rnd.nextDouble()*20)+1;
            int n = (int)(rnd.nextDouble()*r*c*0.75);
            System.out.println(r+" "+c+" "+n);
            
            int[][] a = new int[r][c];
    
            
                for(int i=0;i<r;i++)
                {
                
                    k:for(int j=0;j<c;j++)
                    { 
                        if(n==0)
                        {
                                a[i][j]=0;
                                continue k;
                        }
                        
                        a[i][j]=(int)(rnd.nextDouble()*3-1);
                        if(a[i][j]==1)
                            n=n-1;
                    
                        System.out.print(a[i][j]+" ");
                    
                    }            
                    System.out.println();
                
        
            }
        }
    
    }

    *这种写法会出现一个问题:雷全部出现后,后面不会自动补0:

    再次修改代码:

    import java.util.*;
    public class java01 {
    
        public static void main(String[] args) {
            
            Random rnd = new Random();
            
            int r = (int)(rnd.nextDouble()*20)+1;
            int c = (int)(rnd.nextDouble()*20)+1;
            int n = (int)(rnd.nextDouble()*r*c*0.75);
            System.out.println(r+" "+c+" "+n);
            
            int[][] a = new int[r][c];
    
            
                for(int i=0;i<r;i++)
                {
                
                    k:for(int j=0;j<c;j++)
                    { 
                        if(n==0)
                        {
                                a[i][j]=0;
                                System.out.print(a[i][j]+" "); //使a[i][j]=0可以输出
                                continue k;
                        }
                        
                        a[i][j]=(int)(rnd.nextDouble()*3-1);
                        if(a[i][j]==1)
                            n=n-1;
                    
                        System.out.print(a[i][j]+" ");
                    
                    }            
                    System.out.println();
                
        
            }
        }
    
    }
  • 相关阅读:
    nginx教程2:日志
    3.1.1 基于监听的事件处理机制
    示例(1)按键和文本框监听
    2.3.3 Button(按钮)与ImageButton(图像按钮)
    2.3.2 EditText(输入框)详解
    2.3.1 TextView(文本框)详解
    2.2.3 TableLayout(表格布局)
    2.2.2 RelativeLayout(相对布局)
    2.2.1 LinearLayout(线性布局)
    2.1 View与ViewGroup的概念
  • 原文地址:https://www.cnblogs.com/bamboojun/p/8764495.html
Copyright © 2020-2023  润新知