Java学习第8天

双色球问题:机选n注,前面6位在133中选,且排好序。最后一位在116中选
package org.mobiletrain;

import java.util.Scanner;

public class Test01 {

    private static void bubbleSort(int [] array){
        boolean swapped = true;
        for(int i = 1; swapped && i < array.length; i++){
            swapped = false;
            for (int j = 0; j < array.length - i; j++){
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    swapped = true;
                }
            }
        }

    }
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("机选几注:");
        int n = input.nextInt();
        input.close();
        for(int counter = 1; counter <= n;counter++){
        int[] redBalls = new int[6];
        for (int i = 0; i < redBalls.length;){
            //生成1~33的随机数,作为红色球的号码
            int number = (int) (Math.random() * 33 + 1);
            //检查此号码在之前选中的号码中有没有出现过
            boolean isDuplicated = false;
            for (int j = 0; j < i; j++){
                //如果当前号码已经出现过
                if (redBalls[j] == number) {
                    isDuplicated = true;
                    break;
                }
            }
            if (!isDuplicated) {
                redBalls[i] = number;
                i++;//只有选中不重复的,i才+1.
            }
        }
        bubbleSort(redBalls);
        for(int x: redBalls){
            System.out.printf("%02d ", x);
        }
        int blueBall = (int) (Math.random() * 16 + 1);
        System.out.printf("(%02d)\n",blueBall);//%02d表示,数字不够两位,前面补0
        }
    }
}

1. 二维数组

  • 可以看成是数组的数组
  • 例如:String str[][] = new String[3][4];
public static void main(String[] args) {
        int[][] scores = new int[5][3];
        for (int i = 0; i < scores.length; i++){
            for (int j = 0; j < scores[i].length; j++){
                scores[i][j] = (int) (Math.random() * 101);
                System.out.print(scores[i][j] + "\t");
            }
            System.out.println();
        }
    }

2. 二维数组的实例:杨辉三角

public static void main(String[] args) {
        int[][] y = new int[10][];
        for (int i = 0; i < y.length; i++){
            y[i] = new int[i + 1];
            for (int j = 0; j < y[i].length; j++){
                if (j == 0 || j == i) {
                    y[i][j] = 1;
                }
                else {
                    y[i][j] = y[i - 1][j] + y[i - 1][j - 1];
                }
                System.out.print(y[i][j] + "\t");
            }
            System.out.println();
        }
    }

3. 面向对象

  • 对象 - 能够接收消息的实体
  • 对象的特点:
    1.万物皆对象
    2.每个对象都是独一无二的
    3.每个对象都有自己的属性
    4.对象都属于某个类
  • 类是造对象的蓝图或模板
  • 对象之间是通过互相发消息连接起来的
  • 写代码的终极原则:高内聚,低耦合
  • 面向对象编程的步骤:
  1. 定义类
    数据抽象 - 找到和对象相关的属性 - 找名词
    行为抽象 - 找到和对象相关的行为(方法) - 找动词
  2. 创建对象
    new 构造器();
  3. 给对象发消息
    写构造器,通常是公开的,名字跟类名一样
public class Student {
    // 数据抽象 - 找到和对象相关的属性 - 找名词
    private String name;
    private int age;
    
    //构造器 - 通常都是公开的
    //名字跟类名完全一样
    public Student(String n, int a) {
        name = n;
        age = a;
    }
    
    // 行为抽象 - 找到和对象相关的行为(方法) - 找动词
    public void play(String gameName) {
        System.out.println(name + "正在玩" + gameName + ".");
    }
    
    public void study() {
        System.out.println(name + "正在学习.");
    }
    
    public void watchJapaneseAV(){
        if (age >= 18) {
            System.out.println(name + "正在观看爱情动作片");
        }
        else{
            System.out.println(name + "只能观看<熊出没>");
        }
     }  
}

使用时:

public static void main(String[] args) {
        //面向对象编程的第2步 --- 创建对象
        //new 构造器();
    Student stu = new Student("王大锤", 15);
        //面向对象编程的第3步 --- 给对象发消息
        stu.study();
        stu.play("LOL");
        stu.watchJapaneseAV();
        
        Student stu2 = new Student("jack", 50);
        stu2.study();
        stu2.play("斗地主");
        stu2.watchJapaneseAV();
    }

4. 面向对象的实例

public class Clock {

    private int hour;
    private int minute;
    private int second;
//  private boolean flag; //默认值:false
//  private double x;//默认值:0.0
//  private String a;//默认值:null
    
    //如果定义类时没写任一个构造器,那么系统会自动添加一个默认的隐式构造器(平庸构造器)什么都不干
    //时钟构造器
    public Clock(){
        //Java 7使用
//      Calendar cal = new GregorianCalendar();
//      this.hour = cal.get(Calendar.HOUR_OF_DAY);
//      this.minute = cal.get(Calendar.MINUTE);
//      this.second = cal.get(Calendar.SECOND);
        //Java 8以后使用
        LocalDateTime time = LocalDateTime.now();
        this.hour = time.getHour();
        this.minute = time.getMinute();
        this.second = time.getSecond();
    }
    
    public Clock(int hour,int minute,int second){
        this.hour = hour;
        this.minute = second;
        this.second = second;
    }
    
    public String display(){
        //这样写代码就和控制台紧紧耦合在了一起
        //System.out.printf("%02d:%02d:%02d\n",hour,minute,second);
        return String.format("%02d:%02d:%02d",hour,minute,second);
    }
    
    public void run() {
        second += 1;
        if (second == 60) {
            second = 0;
            minute += 1;
            if (minute == 60) {
                minute = 0;
                hour += 1;
                if (hour == 24) {
                    hour = 0;
                }
            }
        }
    }
}
  • 使用时:
public static void main(String[] args) {
        Clock clock = new Clock();
        System.out.println(clock.display());
        while (true){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            clock.run();
            System.out.println(clock.display());
        }
    }

5. Java中自带的窗口类JFrame

public static void main(String[] args) {
        //创建窗口对象
        JFrame frame = new JFrame("我的第一个窗口");
        //通过给窗口对象发消息来设置和显示窗口
        frame.setSize(400,300);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
        Clock clock = new Clock();
        JLabel label = new JLabel(clock.display());
        label.setHorizontalAlignment(JLabel.CENTER);
        Font font = new Font("华文新魏",Font.BOLD,36);
        label.setFont(font);
        frame.add(label);
        
        frame.setVisible(true);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,493评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,774评论 0 11
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,300评论 0 6
  • 小类型向大类型转换 不同类型的数据经常出现相互转换的现象. 1, 在Java中小类型向大类型的转换会自动完成, 即...
    o0寳贝阅读 396评论 0 0
  • 今天看到同学的朋友圈发了一则消息,庆祝自己五公里跑步获取得第一。我们都纷纷点赞。 想起一个同事发的消息,他在开始学...
    金明啊阅读 204评论 0 0