双色球问题:机选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.对象都属于某个类 - 类是造对象的蓝图或模板
- 对象之间是通过互相发消息连接起来的
- 写代码的终极原则:高内聚,低耦合
- 面向对象编程的步骤:
- 定义类
数据抽象 - 找到和对象相关的属性 - 找名词
行为抽象 - 找到和对象相关的行为(方法) - 找动词 - 创建对象
new 构造器(); - 给对象发消息
写构造器,通常是公开的,名字跟类名一样
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);
}
网友评论