JAVA第二天
今日学习内容
目录
今日学习内容
package----包
数组
概念:
定义:
数组访问:
冒泡排序法:
Scanner----控制输入语句
循环
for循环:
foreach循环
while循环
跳出和终止:
do...while循环
循环的嵌套
例题*:制作一个计算器
package----包
包的命名规则:
1.尽量使用全小写,没有驼峰式命名,尽量用字母。
2.包名也是由,字母,数字,下划线,$符组成,但建议除了字母不要用别的。
3.一般情况下,使用站点名的逆序:eg:www.baidu.com
包名:com.baidu.模块名
包名:com.baidu.架构名/功能...xxx
数组
概念:
数组就是存储数据长度固定的容器,里面数据要保证数据类型是相一致。
数组就是存储数据长度固定的容器,里面数据要保证数据类型是相一致。
数组一旦声明,必须指定长度。
定义:
一维数组:
int [] arr1={1,2,3,4,5};//不用,有局限性
int arr2[]={1,2,3,4,5};//不用,有局限
int [] arr3=new int[10];//
int [] arr4=new int[]{1,2,3,4,5,6,7};//推荐使用
二维数组:
int[][] arr=new int[3][2]
1. 声明 二维数组名字 arr
2. [3] 代表 三个一维数组--->3行
3. [2] 代表 2个值 --->2列
遍历二维数组:(for增强方式)
for(int[] ints:arr){
for(int anInt:ints){
System.out.println(anInt+".");
}
System.out.println();
}
数组访问:
索引 :每一个存储到数组中元素,都会自动拥有一个编号,从0开始,这个自动编码叫做数组索引(index),可以通过数组索引(index,下标)访问的数组中元素。
格式:数组名[索引]
String[] strs={"张三","李四","王五"};
System.out.println(strs[0]);
System.out.println(strs[1]);
System.out.println(strs[2]);
长度:length
System.out.println(strs.length);
赋值:
strs[1]="赵六";
索引 :每一个存储到数组中元素,都会自动拥有一个编号,从0开始,这个自动编码叫做数组索引(index),可以通过数组索引(index,下标)访问的数组中元素。
格式:数组名[索引]
String[] strs={"张三","李四","王五"};
System.out.println(strs[0]);
System.out.println(strs[1]);
System.out.println(strs[2]);
长度:length
System.out.println(strs.length);
赋值:
strs[1]="赵六";
数组在内存中的原理
int[] arr --->都在栈内存中 main方法里 arr=数组内存地址
new arr[10] -->都在堆内存 ,划分连续空间(1000~1039 int占有个4字节 4*10)-》jd98343
自动分配index ->0-arr[0]...9-arr[9] 并且初始化
int =0 = ---->数组在堆内存中地址赋值给栈内存中 arr的引用 ,输出 arr
如果数组下标超出了长度(不存在索引),程序会抛出越界异常。
冒泡排序法:
把数组内的元素从小到大或者从大到小排列。
思路:相邻元素两两相比,元素互换,找出最大值。
第一次排序:
代码如下:
package homework;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//排序
//冒泡排序
int[] arr={3,1,6,9,7,2,8,4,5};
int[] arrSort=sort(arr);
//int[] arr={1,2,3,4,5,6,7,8,9};
System.out.println("冒泡排序之后结果是:"+Arrays.toString(arrSort));
}
// 冒泡排序
// int【】 排好序 int[] arr 没排序
public static int[] sort(int[] arr){
int count=0;
for(int i=0;iarr[j+1]){
//相隔两数交换位置
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
count++;
}
}
System.out.println("循环了多少次"+count+"次");
return arr;
}
}
Scanner----控制输入语句
应用:
Scanner in=new Scanner(System.in);//键盘输入。 String s=in.next(); System.out.println(s);
输出:
例题:
需求:
控制台分别输入两个整数
如果有一个数是8,并且第二个数是9,就打印两个数的和
如果其中有一个数是8或者有一个是9,就打印两个数的差
如果两个数中既没有8也没有9,就分别打印两个数。
代码如下:
Scanner a = new Scanner(System.in);
Scanner b = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int c=a.nextInt();
System.out.println("请输入第二个整数:");
int d=b.nextInt();
if(c==8){
if(d==9){
System.out.println(c+"+"+d+"="+(d + c));
return;
}
System.out.println(c+"-"+d+"="+(c - d));
return ;
}else if(c==9 || d==9 || d==8){
System.out.println(c+"-"+d+"="+(c - d));
return ;
}
System.out.println("第一个数="+c);
System.out.println("第二个数="+d);
在这里我们就随机输入两个数,就不都展示了:
多重if 每个if之间没有联系,这些if有可能都执行
例题2:
需求:
成绩管理系统:
键盘输入成绩:
如果成绩是60分:及格
如果成绩是85分:奖励一台ipad
如果成绩是100分:奖励一台十三香pro max
如果其他情况:没奖励。
代码如下:
Scanner a = new Scanner(System.in);
System.out.println("请输入您的成绩");
int score=a.nextInt();
switch (score){
case 60:
System.out.println("及格");
break;
case 85:
System.out.println("奖励一台ipad");
break;
case 100:
System.out.println("奖励一台十三香pro max");
break;
default:
System.out.println("你啥也没有!");
}
java里的switch只能判断如下类型
整型:byte、short、int
字符型:char
String:JDK1.7以后的版本包括7(JDK1.7也就是7)
枚举:JDK5以后包括5
循环
for循环:
for(初始化表达式;布尔表达式;步进表达式){
循环体
}
for(初始化表达式;布尔表达式;步进表达式){
循环体
}
例题:
需求:
打印一个5*5的矩形
for (int i = 0; i <5 ; i++) {
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
System.out.println("");
}
foreach循环
也可以理解为是for增强语句
可以理解为把数组中的元素通过:镜像给i
我们操作的不是原始数据,我们操作的是镜像数据
foreach的操作更加的安全,不影响原始数据
foreach是JDK5以后才有的
两个革命性版本:JDK5/JDK8。
示例:
int []arr=new int[]{1,2,3,4}
for(int i:arr){
System.out.println(i+1);//遍历数组
}
while循环
初始化表达式
while(布尔表达式){
循环体
步进表达式
}
例题:
需求:
猜数字:
键盘输入一个数字把他保存起来。 猜一猜输入的是什么?
猜大了,就提示大了,小了就提示小了, 直到猜到这个数。
代码如下:
Scanner a = new Scanner(System.in);
int c=0;
System.out.println("请输入一个你想保存的数");
int num=a.nextInt();
System.out.println("游戏即将开始....");
System.out.println("请猜猜数字是几呀!");
while(c==0){
int num1=a.nextInt();
if(num1>num){
System.out.println("猜大了");
}else if(num1
do...while循环
do{
循环体
}while(布尔表达式)
do..while跟while本质上没有区别,唯一的区别就是
do...while先执行,后判断(无论符不符合,都会至少执行一次)
while,先判断,后执行。
跳出和终止:
break:终止当前循环。
continue:终止当前次循环,开启下一次循环。
默认只能控制离他们最近的循环。
但可以给想跳出的循环加上标签。
类似于:goto
终止程序执行的方式:
system.exit(0);
0 :代表安全退出
-1:代表强制退出
如果能安全退出,就不用它了
所以大部分都用-1;
示例:
a:for (int i = 0; i <5 ; i++) {
for (int j = 0; j < 5; j++) {
System.out.print("*");
break a;
}
System.out.println("");
}
最后执行结果只有一个*号,因为在i=0,j=0时就已经跳出了循环。
循环的嵌套
利用循环的嵌套可以解决很多问题:
打印一个九九乘法表:
for (int i = 1; i < 10; i++) {
for (int j = 1; j <=i ; j++) {
int x=i*j;
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println("");
}
例题*:制作一个计算器
需求:
从键盘输入两个数字和一个符号
加减乘除
打印输出计算结果
1.除数不能为0
2.符号输入不对怎么办
3.计算器能不能一直算下去。
Scanner a = new Scanner(System.in);
n1:for(;;){
System.out.println("请输入第一个数");
double num1=a.nextDouble();
n2:for(;;){
System.out.println("请输入第二个数");
double num2=a.nextDouble();
n3:for(;;){
System.out.println("请输入运算符号");
String symbol=a.next();
double sum=0;
switch (symbol){
case "+":
sum=num1+num2;
System.out.println("计算结果为"+num1+symbol+num2+"="+sum);
break n2;
case "-":
sum=num1-num2;
System.out.println("计算结果为"+num1+symbol+num2+"="+sum);
break n2;
case "*":
sum=num1*num2;
System.out.println("计算结果为"+num1+symbol+num2+"="+sum);
break n2;
case "/":
if(num2!=0) {
sum=num1/num2;
System.out.println("计算结果为"+num1+symbol+num2+"="+sum);
break;
}else{
System.out.println("除数错误,请重新输入");
continue n2;
}
default:
System.out.println("你输入的符号错误");
continue n3;
}
}
}
c:for(;;){
System.out.println("是否继续运算:1、是。2、否");
double x=a.nextDouble();
if(x==1){
continue c;
}else if(x==2){
System.out.println("计算机即将关闭,感谢使用");
break n1;
}else {
System.out.println("输入错误,请重新输入");
}
}
}
思维导图:
暑期编程PK赛
得CSDN机械键盘等精美礼品! 


