Java语言发展史
课程大纲:
-
Java语言发展史;
1、sun公司1995年推出,2009年Oracle公司收购sun;
-
下载;
1、到Oracle官网下载
Java体系与特点
课程大纲:
-
Java体系结构
1、JavaSE: 标准版:桌面开发和低端商务应用解决方式
2、JavaEE:企业版:以企业环境开发应用程序解决方式
3、JavaME:微型版:致力于消费产品和嵌入式开发
SE是EE和ME学习的基础。
-
Java能够做什么
-
开发桌面应用程序,银行软件和结账软件,面向web的应用程序
-
门户站点(中国移动),阿里巴巴,电子商务站点
-
金融。电信,电力等各行各业的解决方式
-
Java语言特点
-
纯面向对象的编程语言
-
跨平台
-
具有较高的安全性:自己主动回收(GC)。强制类型检查,取消指针。
Java跨平台原理
课程大纲:
-
Java快平台原理
Java源码(.java)→(编译)字节码文件(.class)→(运行)java虚拟机(Windows平台、Mac平台和Linux平台).
-
Java虚拟机
-
JVM可理解为能够运行字节码文件的虚拟计算机系统
-
它有一个解释器组件能够实现字节码文件和操作系统之间的通讯
-
对于不同的执行平台有着不同的JVM
-
JVM屏蔽了底层执行平台的区别,实现了一次编译所赐执行
-
垃圾回收器(GC)
-
不再使用的内存空间应当进行垃圾回收已释放内存空间,C++须要程序猿自己手动回收没用的内存空间,Java消除了该弊端,
-
JVM(提供了一种线程跟踪存储空间的分配情况)在空暇时检查和释放那些能够释放的内存空间
-
GC在Java程序执行过程中自己主动启动,程序猿无法控制和干预
JDK的安装
课程大纲:
-
JDK安装
-
jdk:Java开发工具集,
-
jre:Java执行环境
-
JDK文件夹结构
-
bin文件夹:存放Java的编辑器、解释器等工具(可运行文件)
-
demo文件夹:存放演示程序
-
include文件夹:存放用于本地方法的文件
-
jre文件夹:存放Java执行环境文件
-
lib文件夹:存放Java的类库文件
-
sample文件夹:存放一些范例程序
-
src.zip文件夹:jdk提供类的源码
-
db文件夹:存放轻量级的数据库。Derby。
环境变量的配置
课程大纲:
-
配置环境变量
-
path:用于指定操作系统可运行指令的路径
-
calsspath:Java虚拟机运行某个类时会依照classpath指定的文件夹顺序去查找这个类
-
我的电脑→属性→高级→环境变量
程序开发步骤
课程大纲:
-
对程序的理解
-
程序是为实现特定目标或解决特定问题而用计算机语言编写的一系列命令序列的集合
-
程序可看做是一些列动作的运行过程的描写叙述
-
Java程序开发的三个步骤
-
编敲代码(hello.java)
-
编译程序(hello.class)
-
执行程序(JVM)
HelloWorld入门
课程大纲:
-
编写HelloWorld程序
-
public calss HelloWorld
{
Public static void main(String[] args)
{
System.out.print(“Helloworld!”);
}
}
-
用javac命令编译程序
1、因为配置好了path环境变量,所以直接打开命令程序(cmd),把文件夹切换到HelloWorld.java文件夹下。使用编译程序D:\...javac HelloWorld.java
-
用Java命令执行程序
1、上一步编译形成了HelloWorld.class文件,用Java命令执行程序:D:\...java HelloWorld
HelloWorld程序分析
课程大纲:
-
HelloWorld程序分析
1、见html文档
-
三种凝视
1、// :单行凝视
2、/*…..*/:多行凝视
3、/**…..*/ :文档凝视(使用Javadoc生成文档)
-
代码格式
-
Java严格区分大写和小写
-
Java是一种自由格式的语言
-
代码分为结构定义语言和功能运行语句
-
功能运行语句最后必须用分号结束
/**
文档凝视:仅仅是一个Java入门程序,
public:公共的,共同拥有的
class:类别,声明一个类的keyword
*/
class HelloWorld
{
//这是一个单行凝视;
/*
这是一个多行凝视;
*/
public static void main(String[] args)
{
System.out.println("HelloWorld!");
}
}
Java经常使用开发工具
课程大纲
-
Java经常使用开发工具
-
编辑器:记事本、Editplus、UE、其它文本编辑器
-
集成开发工具(IDE):Eclipse、NetBeans、JBuilder
Java程序反编译介绍
课程大纲:
-
反编译工具介绍
-
把.class反编译成.java
-
CavajJava Decomplier 是独立的Windows应用程序,即使没有安装Java,也能够使用。
变量
课程大纲:
-
什么是变量
-
变量是没有固定的值,是能够改变的,是系统为程序分配的一块内存单元。用来存储各种类型的数据,依据所存储的数据类型的不同。有各种不同类型的变量,变量名代表这块内存中的数据。
-
变量的分类
-
按所属类型分:基本数据类型和引用型数据类型
-
按被声明的位置分:
局部变量:方法或语句块内部定义的变量
全局变量:方法外部、类内部定义的变量
八种基本数据类型
课程大纲
-
计算机存储数据的基本单位
-
字节(Byte):计算机文件大小的基本计算单位
-
比特/位(bit)1B = 8b
-
在内存计算过程中,字节少的数据运算速度更快
在磁盘存储中,字节少的数据类型也可充分存入很多其它的数据
-
八种基本数据类型
1、
数据类型 |
keyword |
占用字节 |
取值范围 |
默认值 |
布尔型 |
Boolean |
1 |
True,false |
False |
字节型 |
byte |
1 |
-128~127 |
0 |
短整型 |
Short |
2 |
|
0 |
整型 |
int |
4 |
|
0 |
长整型 |
long |
8 |
|
0 |
字符型 |
char |
2 |
|
‘\u0000’ |
单精度浮点型 |
float |
4 |
|
0.0F |
双精度浮 |
double |
8 |
|
0.0D |
基本数据类型的声明
课程大纲
-
怎样声明一个基本数据类型
声明变量的格式:
-
声明变量:类名 变量名;int i;
-
声明的同一时候给变量赋值:类名 变量名=值;int a=1。
-
给已经声明过的变量赋值:变量名=值。i=2。
class BaseDataTypes
{
public static void main(String[] args)
{
boolean flag;
flag = true;
byte b = 100;
short s = 10;
long g = 1000L;
char c = ‘白‘;
float f = 3.14f;
double d = 3.1415926d;
//变量名的首字母小写,多个单词之间首字母大写
}
}
进制与转换
课程大纲
-
十进制
-
採用十进制可能与人有十个手指头有关
-
二进制
-
二进制逢二进一,仅仅有0和1
-
Bit指的是0或1,是计算机存储处理信息的基本单位。
-
Byte 字节:他表示作为一个完整的处理单位的8个二进制代码
-
八进制
-
Java章八进制要以0开头。0123,
-
三个二进制表示一个八进制数字
-
十六进制
-
二进制表示法太冗长,所以计算机程序中非常多有用十六进制,
-
用abcdef表示从0~9之上的数字,
-
Java中十六进制要以0x开头:0x23d
-
四个二进制位表示一个十六进制数字
-
补码
1、补码看计算机组成原理课本
-
进制转换
1、看看计算机组成原理课本
标示符
课程大纲
-
Java标示符
-
Java对包、类、方法、參数和变量等要素命名使用的字符序列成为标示符
-
标示符的命名规则
-
由字母、数字、下划线(-)和($)组成
-
不能以数字开头
-
区分大写和小写
-
长度无限制
-
不能使Java中的keyword和保留字
-
见名知意
-
演示样例
1合法标示符:
Vince 、xiaobai、user_name、_userName、$abc_123
2非法标示符
2 userName、user#Name、Hello xiaobai、class
基本数据类型转换
课程大纲
-
自己主动类型转换
-
容量小的类型自己主动转换为容量大的类型
-
Byte、short、int →float→long→double
-
Byte、short、int三者不会相互转换。他们在计算时转换成int类型,
-
强制类型转换
-
容量大的类型转换成容量小的数据类型时要进行强制转换,加上强制转换符,
-
Long n= 100L;
Int a = (int)n;
-
有可能造成精度减少或者数据溢出,使用时小心。
-
Boolean类型不能转换成不论什么数据类型,
keyword
课程大纲
-
keyword
1、看课本总结
2、保留字:goto、const,
-
演示样例
转义字符
课程大纲
-
Java经常使用转义字符
1、\n:换行
2、\r:回车
3、\t:水平制表
4、\’:产生一个单引號
算术运算符
课程大纲
-
算术运算符
1、+,—,*。/,%。
2、++,——,
3、++:假设是前缀先对次变量加一,在运行其它操作
假设是后缀先运行其它操作。后对变量加一。
-
演示样例
-
作业
-
通过键盘输入,交换两个数据,然后输出这两个数
-
定义一个五位数。求各位上的数字之和
-
依据天数(46)计算周数和剩余天数,天数通过键盘输入
importjava.util.Scanner;
class CylinderBluk
{
public static void main(String[] args)
{
Scanner input = newScanner(System.in);
System.out.println("请输入圆柱体的高:");
int h = input.nextInt();
System.out.println("请输入圆柱体的底面半径:");
int r = input.nextInt();
float pi = 3.14f;
float result = pi*r*r*h;
System.out.println("圆柱体的体积是:"+result);
}
}
importjava.util.Scanner;
class HomeWork1
{
public static void main(String[] args)
{
Scanner input = newScanner(System.in);
System.out.println("请输入第一个数字a:");
int a = input.nextInt();
System.out.println("请输入第二个数字b:");
int b = input.nextInt();
System.out.println("您输入的第一个数字a为:"+a+"第二个数字b为:"+b);
int c = a;
a=b;
b=c;
System.out.println("交换后的第一个数字a为:"+a+"第二个数字b为:"+b);
}
}
class HomeWork2
{
public static void main(String[] args)
{
int num = 12345;
int gewei = num % 10;
int shiwei = num % 100 / 10;
int baiwei = num %1000 / 100;
int qianwei = num % 10000 / 1000;
int wanwei = num / 10000;
int result = gewei + shiwei + baiwei+ qianwei + wanwei;
System.out.println("结果是:"+result);
}
}
importjava.util.Scanner;
class Homework3
{
public static void main(String[] args)
{
Scanner input = newScanner(System.in);
System.out.println("请输入天数:");
int days = input.nextInt();
int weeks = days / 7;
int day = days %7;
System.out.println("您所输入天数为:"+days+",周数为:"+weeks+",剩余天数为:"+day);
}
}
赋值运算符和关系运算符
课程大纲
-
赋值运算符
-
运算顺序为从右往左赋值
-
=, += , -= , *= , /= , %= 。
-
关系运算符
-
关系运算符结果总是boolean类型
-
==。!=,<,>,<=,>=
逻辑运算符
课程大纲
-
逻辑运算符
-
逻辑运算符主要用于对boolean型结果的表达式进行运算,记过总司boolean型
运算符 |
描写叙述 |
演示样例 |
结果 |
& |
与 |
略 |
略 |
| |
或 |
略 |
略 |
! |
非 |
略 |
略 |
^ |
异或 |
略 |
略 |
&& |
短路与 |
略 |
略 |
|| |
短路或 |
略 |
略 |
-
注意短路与和与的差别
&&:前面为非的话。后面不运算,
&:前面为非的话,后面也要进行运算。
位运算符与移位运算符
课程大纲:
-
位运算符
-
位运算符对两个操作数中的每一个二进制位都要进行运算
-
按位取反:~
按位与: &
按位或:|
按位异或:^
-
移位运算符
-
左移:“a<<b”:将二进制形式的a逐位左移b位,最定位空出的b位补0,。
-
带符号右移:”a>>b”:做高位空出来的b位补原来的符号位
-
不带符号右移:”a>>b”:最高位空出来的b位补0.
三目运算符与优先级
课程大纲:
-
三木目运算符
-
X?Y:Z :X位boolean类型的表达式。先计算X的值,若为true,整个表达式的值为Y的值,否则为Z的值。
-
运算符的优先级
1、跟平时非常相像,加括号的优先级最高。
If else条件语句
课程大纲:
-
Ifelse条件语句
-
ifelse 条件是依据条件推断之后在做处理
if(条件语句){。。。
。。
}
if(条件语句){。。。。。} else{。。。。。}
if(条件语句){。。。。。
} else if(条件语句){。。
。。
。
}
if(条件语句){…} else if(条件语句){…} else {…}
Swith条件条件语句
课程大纲
-
Swith条件语句的语法
1语法:
Switch(表达式)
Case 取值1:语句块1。break;
Case 取值2:语句块2。break。
Case 取值3:语句块3。break。
Case 取值n:语句块n;break;
Default :语句块n+1;break;
-
Swith条件语句的规则
-
表达式的返回类型必须是下面类型之中的一个:
Int 、byte、boolean、short、String
-
case子句中的取值必须是常量。且全部的case子句中的值必须是不同的
-
default语句时可选择的
-
break语句用来运行完一个case子句时跳出整个语句块,假设没有写语句块。则往下运行下去,
-
case后面的运行体可写{}。也可不写。
-
条件语句作业
-
要求用户输入两个数a和b。假设a能被b整除或者a+b大于1000。则输出a,否则输出b。
-
使用if else设计自己一天的生活。
-
输入一个月。推断这个月是奇数还是偶数
-
输入一个天数,使用swtich推断该月天数并输出
import java.util.Scanner;
/**
要求用户输入两个数a和b。假设a能被b整除或者a+b大于1000,则输出a,否则输出b。
*/
class HomeWork1
{
publicstatic void main(String[] args)
{
Scannerinput = new Scanner(System.in);
System.out.println("请输入第一个数a:");
inta = input.nextInt();
System.out.println("请输入第二个数b:");
intb = input.nextInt();
intsum = a + b;
intdiv = a % b;
if(div==0||sum>1000)
{
System.out.println(a);
}
else
{
System.out.println(b);
}
}
}
import java.util.Scanner;
/**
输入一个天数,使用swtich推断该月天数并输出
*/
class HomeWork4
{
publicstatic void main(String[] args)
{
Scannerinput = new Scanner(System.in);
System.out.println("请输入月份:");
intresult = input.nextInt();
switch(result)
{
case1:
System.out.println("该月份有31天");
break;
case2:
System.out.println("该月份有28天");
break;
case3:
System.out.println("该月份有31天");
break;
case4:
System.out.println("该月份有30天");
break;
case5:
System.out.println("该月份有31天");
break;
case6:
System.out.println("该月份有30天");
break;
case7:
System.out.println("该月份有31天");
break;
case8:
System.out.println("该月份有31天");
break;
case9:
System.out.println("该月份有30天");
break;
default:
System.out.println("输入有误。");
break;
}
}
}
While循环语句
课程大纲:
-
while循环语句语法
-
while(循环条件)
{
//语句块
}
-
符合条件。循环继续运行。否则跳出循环。
-
特点:先推断后运行。
-
while循环语句演示样例
/**
while 循环语句
*/
class Test
{
public static void main(String[] args)
{
int count = 100;
int i = 0;
while(i<count)
{
System.out.println("我爱你!
");
i++;
}
}
}
Do while 循环语句、
课程大纲:
-
do while 循环语句语法
-
do
{
循环操作
}while(循环条件)
2、特点:先运行一边循环操作。符合条件,循环继续运行,否则跳出循环。
先运行。后推断。
-
演示样例
importjava.util.Scanner;
/**
do while 循环測试
*/
class Test
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int value = 1;
do
{
System.out.println("唱的怎么样?好:1/不好:0");
value = input.nextInt();
}
while (value !=1);
System.out.println("很好。再接再厉!");
}
}
For循环语句
课程大纲:
-
for循环语法
for(初始化參数;推断条件。更新循环变量)
{
循环体;
}
-
for循环演示样例
见code目录
-
continue语句的使用
跳出continue以下的语句,进入下一次循环,
-
break语句的使用
跳出当前近期的循环。
/**
for循环
*/
class Test
{
public static void main(String[] args)
{
int score = 0;
for(int i=0;i<100;i++)
{
if(i%10==0)
{
System.out.println("第"+i+"天,哪个啥!");
continue;
}
System.out.println("第"+i+"天,吃饭,睡觉,学Java");
score+=2;
if(score>=100)
{
break;
}
}
System.out.println("score="+score);
}
}
多重循环语句
课程大纲:
-
多重循环
-
程序设计大赛,三个班级是个学生參赛。计算出每一个班级參赛学生的成绩;
-
用*打印直角三角形的图案;
-
循环语句作业
-
打印输出0~200之间能被7整除,但不能被4整除的全部整数,
-
Java阶乘求和:1。+2!
+3!+++10!
-
打印九九乘法表
-
用“*”打印等腰三角形
importjava.util.Scanner;
/**
程序设计大赛。三个班级是个学生參赛,计算出每一个班级參赛学生的成绩;
*/
class Demo1
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
//外层循环控制班级;
for(int i = 1;i<=3;i++)
{
// 内层班级控制学生人数;
int sum = 0;
for(int j = 1;j<=4;j++)
{
System.out.println("请输入第"+i+"个班级第"+j+"个学生的成绩");
int score = input.nextInt();
sum+=score;
}
int avg = sum/4;
System.out.println("第"+i+"个班级的平均分是"+sum);
}
}
}
/**
用*打印直角三角形的图案
*/
class Demo2
{
public static void main(String[] args)
{
//外层控制行数
for(int i = 0;i<5; i++)
{ //控制输出空格
for(int j =i;j< 4;j++)
{
System.out.print(" ");
}
//控制输出*
for(int j =0;j <=i;j++)
{
System.out.print("*");
}
System.out.println();
}
}
}
/**
打印输出0~200之间能被7整除,但不能被4整除的全部整数。
*/
class Homework1
{
public static void main(String[] args)
{
for(int i = 0;i<200;i++)
{
if(i%7==0&&i%4!=0)
{
System.out.println(i);
}
}
}
}
/**
Java阶乘求和:1!
+2!
+3!
+...+10!
*/
class Homework2
{
public static void main(String[] args)
{ int sum = 0;
for(int i= 1;i<=10;i++)
{
int s = 1;
for(int j = 1;j<=i;j++)
{
s*=j;
}
System.out.println(i+"的阶乘是:"+s);
sum +=s;
}
System.out.println(sum);
}
}
/**
用“*”打印等腰三角形
*/
class HomeWork4
{
public static void main(String[] args)
{
for(int i=0;i<5;i++)
{
for(int j=i;j<4;j++)
{
System.out.print(" ");
}
for(int j=0;j<=2*i;j++)
{
System.out.print("*");
}
System.out.println();
}
}
}
数组语法
课程大纲:
-
数组的作用
-
一组可以存储同样类型值的变量的集合
-
当我们有一组同样数据类型的变量要存储,假设此时使用单个变量名来存储会比較繁琐和复杂。不利于维护。
-
数组的语法
1、数组的声明:
声明一:int[] x;
声明二:int [] x = new int [3];
声明三:int [] x = new int[]{3,4,5};
Int [] x = {3,4,5};
2、求数组的长度:x.length;
class ArrayDemo
{
public static void main(String[] args)
{
int[] x;
x = new int[3];//第一种方式
x[0] = 1;
x[1] = 2;
x[2] = 3;
int []y = new int[]{1,2,3};//另外一种方式
int []z = {1,2,3};//第三种方式
String[] names = new String []{"萌萌","梦梦","欢欢"};
//String[]names = {"萌萌","梦梦","欢欢"};
System.out.println(names.length);
for(int i=0;i<names.length;i++)
{
System.out.println(names[i]);
}
}
}
数组深入
课程大纲:
-
使用数组要注意的问题
-
空指针异常
-
数组越界异常
-
数组内存结构分析
-
多维数组
三个班级四个学生參加程序设计大赛。计算每一个班级的平局分;见code目录;
-
作业
/**
数组使用的两个问题
*/
classArrayExcptionDemo
{
public static void main(String[] args)
{
String [] names = null;
System.out.println(names[0]);//空指针异常:数组没有分配内存空间
int [] a = {1,2,3,4,5};
System.out.println(a[5]);//下标越界异常
}
}
importjava.util.Scanner;
/**
猜数游戏:从键盘中随意输入数字。推断数组中是否包括次数字
*/
class HomeWork1
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("開始————————");
System.out.println("请输入数字:");
int [] a = {10,35,67,35,56};
int value = input.nextInt();
boolean flag = false;
for(int i=0;i<a.length;i++)
{
if(a[i]==value)
{
flag=true;
}
}
if(flag)
{
System.out.println("有该数字");
}
else
{
System.out.println("没有该数字");
}
}
}
/**
使用字母打印正三角形
*/
class HomeWork2
{
public static void main(String[] args)
{
char[] c ={‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘};
//控制行数
for(int i = 0 ;i<c.length;i++)
{
//控制空格
for(int j =i;j<c.length -1;j++)
{
System.out.print("");
}
//控制字母
for(int j =0;j<=2*i;j++)
{
System.out.print(c[i]);
}
System.out.println();
}
}
}
importjava.util.Scanner;
/**
用多维数组实现输出三个班级四个学生參加程序设计大赛,
计算每一个班级的平局分;
*/
class ManyArrayDemo
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int [][] scores = new int [3][4];
//通过键盘输入每一个学生的成绩;
for(int i = 0;i<3;i++)
{
for(int j = 0;j<4;j++)
{
System.out.println("请输入第"+(i+1)+"个班级"+(j+1)+"个学生的成绩:");
scores[i][j] = input.nextInt();
}
}
//输出每一个班级学生的平均成绩
for(int i= 0;i<3;i++)
{ int sum = 0;
//System.out.println("第"+(i+1)+"个班级的平均成绩为:");
for(int j=0;j<4;j++)
{
sum += scores[i][j];
}
System.out.println("第"+(i+1)+"个班级的平均分为:"+(sum/4));
}
}
}
求最大值和最小值算法
课程大纲:
一、求最大值和最小值算法
-
在一个数列中找出最大值和最小值
遍历数组
/**
求一组数种的最大值和最小值
*/
class MaxMinDemo
{
public static void main(String[] args)
{
int [] num ={4,6,9,46,28,2,90};
int max = num[0];
int min = num[0];
for(int i=0;i<num.length;i++)
{
if(num[i]>num[0])
{
max = num[i];
}
if(num[i]<num[0])
{
min = num[i];
}
}
System.out.println("最大值为:"+max);
System.out.println("最小值为:"+min);
}
}
冒泡排序算法
课程大纲:
-
冒泡排序算法实现原理
1、相邻的元素两两比較,前者比后者大的交换位置,否则不交换,
-
冒泡排序算法实现
见code目录
-
定义一个数组:
Int [] hot = {705,356,378,596,264};
-
循环实现排序:
for(int i= 0;i<hot.length-1;i++)
{
For(int j=0;j<hot.length-1-i;j++)
{
//推断是否要交换位置;
}
}
/**
冒泡排序的实现
*/
class BubbleSort
{
public static void main(String[] args)
{
int[] num = {159,345,654,234,890,687};
int temp;
//控制比較的轮数
for(int i = 0;i<num.length-1;i++)
{
//控制每轮比較的次数
for(int j=0;j<num.length-1-i;j++)
{
//推断条件,交换位置
if(num[j]>num[j+1])
{
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
for(int i=0;i<num.length;i++)
{
System.out.println(num[i]+" ");
}
}
}
应用案例之模拟双色球彩票
课程大纲:
-
双色球彩票玩法
1、
-
双色球彩票需求分析
-
怎样产生篮球和红球
-
怎样接受用户选号
-
怎样验证是否中奖
-
发布本期中奖号码
-
代码实现
importjava.util.Random;
importjava.util.Scanner;
/**
模拟双色球彩票程序
实现步骤:
1、系统生成一个篮球和6个红球并储存
2、接受用户选号
3、验证是否中奖
4、发布中奖号码
*/
class DoubleBall
{
public static void main(String[] args)
{
int sysBlueBallNum;//系统生成的篮球号
int [] sysRedBallNum = new int [6];//系统生成的红球号
int userBlueBallNum;//用户选择的篮球号
int [] userRedBallNum = new int [6];//用户选择的红球号
int blueBall = 0;//推断蓝色球是否正确
int redBallCount = 0;//推断红色球正确的个数
Random r = new Random();//创建生成随机数的工具
Scanner input = newScanner(System.in);//接受用户从键盘输入
int[] redNum ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};
sysBlueBallNum = r.nextInt(16) + 1;//生成系统的篮球号
//随机生成系统红色球
for(int i =0;i<sysRedBallNum.length;i++)
{
while(true)
{
int index = r.nextInt(33);
if(redNum[index]!=0)
{
sysRedBallNum[i] = redNum[index];
redNum[index] = 0;
break;
}
}
}
System.out.println("双色球选号開始:——————李会芳:——————————祝你好运!
GOOD LUCK TO YOU");
System.out.println("请选择蓝色球的号码(16选1):");
userBlueBallNum = input.nextInt();//用户选择蓝色球
System.out.println("请选择红色球的号码(33选6):");
//用户选择红色球
for(int i = 0;i<userRedBallNum.length;i++)
{
userRedBallNum[i] = input.nextInt(33) + 1;
}
//验证蓝色球正确的个数
if(sysBlueBallNum==userBlueBallNum)
{
blueBall = 1;
}
//验证红色球正确的个数
for(int i =0;i<userRedBallNum.length;i++)
{
for(int j = 0;j<sysRedBallNum.length;j++)
{
if(userRedBallNum[i]==sysRedBallNum[j])
{
redBallCount++;
break;
}
}
}
//验证是否中奖
if(blueBall==1 &&redBallCount==6)
{
System.out.println("恭喜您,中了一等奖:500万。");
}
else if(redBallCount==6)
{
System.out.println("恭喜您,中了二等奖!100万。");
}
else if(blueBall==1 &&redBallCount==5)
{
System.out.println("恭喜您。中了三等奖!3000元RMB。");
}
else if((blueBall==1 &&redBallCount==4 )||redBallCount==5)
{
System.out.println("恭喜您,中了四等奖!
200元RMB。");
}
else if((blueBall==1 &&redBallCount==3 )||redBallCount==4)
{
System.out.println("恭喜您。中了五等奖!
10元RMB!
");
}
else if(blueBall==1)
{
System.out.println("恭喜您。中了六等奖!5元RMB!
");
}
else
{
System.out.println("革命尚未成功,同志们仍需努力!");
}
//发布本期的中奖号码:(使用冒泡排序)
int temp;
for(int i =0;i<sysRedBallNum.length-1;i++)
{
for(int j = 0;j<sysRedBallNum.length-1-i;j++)
{
if(sysRedBallNum[j]>sysRedBallNum[j+1])
{
temp = sysRedBallNum[j];
sysRedBallNum[j] = sysRedBallNum[j+1];
sysRedBallNum[j+1] = temp ;
}
}
}
//输出中奖的号码
System.out.println("本期的中奖号码为:—————————————————");
System.out.println("蓝色球:");
System.out.println(sysBlueBallNum);
//System.out.println();
System.out.println("红球:");
for(inti=0;i<sysRedBallNum.length;i++)
{
System.out.print(sysRedBallNum[i]+"");
}
}
}