△必须要有面向对象的思想
最少做3个项目
必做1、捕鱼达人
必做2、网络编程、多线程。网络编程讲完后做网络聊天室
3、web
Myeclipse和eclipse的区别:
1、同一家公司的产品
2、大小前者是后者的3倍
3、功能几乎一样,但Myeclipse功能强大得多
4、Myeclipse是收费的、eclipse免费
三者的关系是:一层层的嵌套关系。JDK>JRE>JVM。
JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,具体的下文会详细说明。
JRE :英文名称(Java Runtime Environment),我们叫它:Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。
JDK :英文名称(Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。
建包名字的规则:公司域名倒写.模块名.类名
例:百度公司的包名为com.baidu.www.day1 (day1是具体的项目名称)
快速复制一行:Ctrl+alt+ ↑/↓
虽然要学10门语言,但是只要精通一门语言就可以找工作
对象可以是万事万物,类是对象的模板
类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的具体个体
构造方法是对象的各种具体行为
构造方法是一种特殊的方法,它是一个①与类同名②没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。
创建对象:
类名 对象名 = new 类名();
快速生成代码:(右键源码)
无参构造方法:alt+shift+s 再按c 从超类中生成构造函数
有参构造方法:alt+shift+s 再按o 使用字段生成构造函数
一键返回类中所有(也可以选择)变量的值:alt+shift+s 再选择” 生成toString”
快速创建get和 set方法是什么?
快捷键:alt+shift+s+r tab移动到确定那里之后+enter
鼠标:右键→源码→生成Getter和Setter
数组在实际使用的缺点明显:因为长度是固定的,很有限,而且变化
所以改用集合
package Day1_双色球;
import java.util.Scanner;
/*
主要学习的内容有:
1、直到用户选择退出选项后,程序才停止运行的框架
while (true){
Scanner sc = new Scanner(System.in);
System.out.println{语句1};
System.out.println{语句2};
···
int n = sc.nextInt();//输入的选项
switch (n){
case 1:
case 2:
···
}
}
2、对比两个数组中元素是否相等,并且记录相等元素的数量
借助中间变量temp和记录相等数量的变量redEqualCount
将第一个数组的每个元素赋给temp然后用两个循环对比,每次相等就让redEqualCount加1
for (int i = 0; i < num.length; i++) {
int temp = num[i];
for (int j = 0; j < num.length - 1; j++) {// j是系统生成的号码数组的下标
if (temp == lucknum[j])
redEqualCount++;
}
}
3、每行输出多个数据
for(int i=0; i<num.length; i++) {
for(int j=0; j<5; j++)
System.out.print();//每行输出5个数据
}
System.out.println();
*/
class 双色球 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int totalmoney = 0;// 下注费用
int price = 2;// 单价
int count = 0; // 彩票注数
boolean isBuy = false; // 是否购买了彩票
int num[] = null;
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println("**********双色球系统*********");
System.out.println("\t1.购买彩票");
System.out.println("\t2.开奖");
System.out.println("\t3.退出");
int n = sc.nextInt();
switch (n) {
case 1:
System.out.println("\t购买彩票");
System.out.println("请输入要购买的注数:");
count = sc.nextInt();
totalmoney = count * price;
// 开始选号码
// 定义num的大小
num = new int[7];// 定义能存7个元素的数组
for (int i = 0; i < num.length; i++) {
int red = 0;
int blue = 0;// 分为红球和蓝球
if (i < num.length - 1) {// 存6个红球
System.out.println("请输入6个红球的号码(1-33),第" + (i + 1) + "个号码为" + red);
red = sc.nextInt();
num[i] = red;// 将红球放入数组中
} else {
System.out.println("请输入1个蓝球号码(1-16):");
blue = sc.nextInt();
num[i] = blue;
}
}
System.out.println("一共买了" + count + "注彩票,需要支付" + totalmoney + "元,所选号码为:");
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
System.out.println();
isBuy = true;// 标记为已经购买了彩票
break;
case 2:
System.out.println("\t查看开奖");
if (isBuy) {
// 修改isbuy状态
isBuy = false;
// 得到系统生成的开奖号码
int Lucknum[] = getLucknum();
// 输出已经购买的号码
for (int m : num) {
System.out.println(m + "\t");
}
// System.out.println();
// 输出中奖号码
for (int m : Lucknum) {
System.out.println(m);
}
// 输出中奖等级
int result = getComparesult(num, Lucknum);
if (result == 1) {
System.out.println("恭喜中一等奖,共下注" + totalmoney + "元");
} else if (result == 2) {
System.out.println("恭喜中二等奖,共下注" + totalmoney + "元");
} else if (result == 3) {
System.out.println("恭喜中三等奖,共下注" + totalmoney + "元");
} else if (result == 4) {
System.out.println("恭喜中四等奖,共下注" + totalmoney + "元");
} else if (result == 5) {
System.out.println("恭喜中五等奖,共下注" + totalmoney + "元");
} else if (result == 6) {
System.out.println("恭喜中六等奖,共下注" + totalmoney + "元");
} else {
System.out.println("未中奖,感谢参与!");
}
} else {
System.out.println("请先购买彩票!");
}
break;
case 3:
System.out.println("退出!");
System.exit(0);
break;
// 参数n不满足任何 case,则执行 default 后的语句
default:
break;
}
}
}
public static int[] getLucknum() {// 系统生成7号随机号码并存入数组中
// TODO 自动生成的方法存根
int lucknum[] = new int[7];
for (int i = 0; i < lucknum.length; i++) {
if (i < lucknum.length - 1) {
lucknum[i] = (int) (Math.random() * 33 + 1);
} else {
lucknum[i] = (int) (Math.random() * 16 + 1);
}
}
return lucknum;
}
public static int getComparesult(int[] num, int[] lucknum) {// 对比系统生成与自己购买的结果是否匹配
// TODO 自动生成的方法存根
int redEqualCount = 0;
int blueEqualCount = 0;
int result = 0;
for (int i = 0; i < num.length; i++) {
// 我理解错了,应该是用两个相同的数组对比才能得出结果,而不是只用一个数组,所以要借助r
int temp = num[i];
for (int j = 0; j < num.length - 1; j++) {// j是系统生成的号码数组的下标
if (temp == lucknum[j])
redEqualCount++;
}
// 这里怎么对比蓝球?
if (num[num.length - 1] == lucknum[num.length - 1])// length-1就是最后一个元素的下标
blueEqualCount++;
}
// 得到结果
if (redEqualCount == 6 && blueEqualCount == 1) {
result = 1;
} else if (redEqualCount == 6) {
result = 2;
} else if (redEqualCount == 5 || redEqualCount == 4 && blueEqualCount == 1) {
result = 2;
} else if (redEqualCount == 4 || redEqualCount == 3 && blueEqualCount == 1) {
result = 3;
} else if (redEqualCount == 3 || redEqualCount == 2 && blueEqualCount == 1) {
result = 4;
} else if (redEqualCount == 2 || redEqualCount == 1 && blueEqualCount == 1) {
result = 5;
} else if (blueEqualCount == 1) {
result = 6;
}
return result;
}
}