发表于: 2018-09-18 13:45:12
1 460
一、今日完成:
{........................................................................................................................................................
编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。
在计算机硬件中,编码(coding)是指用代码来表示各组数据资料,使其成为可利用计算机进行处理和分析的信息。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译编码是两个紧密相连的过程,先编码后编译。
编码的体系有:ASCII(美标)国标 GBK(微软)Unicode(国际)等。
..........................................................................................................................................................}
SWITCH语句
switch 语句相当于 if else的另一种表达方式
每个表达式结束,都应该有一个break;
练习,
通过Scanner 输入月份,然后使用switch 判断季节
问题:不知道条件有多个时,switch语句应该怎么写。百度后解决。
{.........................................................................................................................
switch的用法和if的大体作用是一样的,但是在细节方面不一样,if语句主要用做范围性的判断选择,而switch判断的比较准确,类似于等值判断。
用法:
switch(判断条件){
case 与判断条件进行比较:判断成功执行;break(break的作用是执行完成后跳出);
……(可以写很多比较的case)
case 与判断条件进行比较:判断成功执行;break;
}
........................................................................................................................................}
import java.util.Scanner;
public class Month {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println(“输入年月份:”);
int month = s.nextInt();
String season = s.nextLine();
switch(month){
case 1 :
case 2 :
case 3 :
season =“春天”;
break;
case 4 :
case 5 :
case 6 :
season =“夏天”;
break;
case 7 :
case 8 :
case 9 :
season =“秋天”;
break;
case 10 :
case 11 :
case 12 :
season =“冬天”;
break;
default :
season =“什么鬼”;
}
System.out.println(season);
}
}
WHILE语句
只要while中的表达式成立,就会不断地循环执行
do{
} while 循环
与while的区别是,无论是否成立,先执行一次,再进行判断
练习-阶乘,
通过Scanner 获取一个整数,然后使用while计算这个整数的阶乘
N的阶乘等于 N*N-1*N-2* ... * 1
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println(“输入一个整数:”);
int a = s.nextInt();
int b = 1;
while(a>1){
b = a * b;
a --;
}
System.out.println(b);
}
}
FOR循环
和while一样,只是表达方式不一样
练习-乞丐,
天朝有一个乞丐姓洪,去天桥要钱
第一天要了1块钱
第二天要了2块钱
第三天要了4块钱
第四天要了8块钱
以此类推
问题: 洪乞丐干10天,收入是多少?
class Income{
int each = 1;
int sum = 0;
public static void main(String[] args) {
for( int day = 1 ; day < 11 ; day++;){ \\ for里面可不可以创建多个变量呢?
sum += each;
each *= 2;
}
System.out.println(“洪乞丐干10天,收入是:”+ sum);
}
}
{...........................................................................................................................
for(初始化; 布尔表达式; 更新) {
//代码语句
}
关于 for 循环有以下几点说明:
· 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
· 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
· 执行一次循环后,更新循环控制变量。
· 再次检测布尔表达式。循环执行上面的过程。
..................................................................................................................................................................................................................................................................}
CONTINUE语句
继续下一次循环
练习-忽略倍数,
打印 1-100 之间的数,如果这个数,要么是3,要么5的倍数,就忽略掉
public class HelloWorld {
public static void main(String[] args) {
for (int j = 0; j < 101; j++) {
if(0==j%3 || 0==j%5)
continue;
System.out.println(j);
}
}
}
BREAK语句
直接结束当前for循环
练习-百万富翁,
假设你月收入是3000,除开平时花销,每个月留下1000块钱进行投资。
然后你认真的钻研了 《股票和基金 21天从入门到精通》,达到了每年20%的投资回报率。
那么问题来了,以每个月投资1000块钱的节奏,持续投资多少年,总收入达到100万
(复利计算按照每年12000投入计算,不按照每月计息)
复利公式:
F = p* ( (1+r)^n );
F 最终收入
p 本金
r 年利率
n 存了多少年
假设情景一:
p = 10000
r = 0.05
n = 1
解读:
本金是10000
年利率是5%
存了一年 1次
复利收入 10000*( (1+0.05)^1 ) = 10500
假设情景二:
p = 10000
r = 0.05
n = 2
解读:
本金是10000
年利率是5%
存了两年
复利收入 10000*( (1+0.05)^2 ) = 11025
class income{
public static void main(){
int sum = 0;
for(int year = 1;year > 0;year ++){
sum += 12000 * (1.2^(year));
if(sum >= 1000000)
break;
}
System.out.println(year);
}
}
创建一个数组
数组是一个固定长度的,包含了相同类型数据的 容器
int[] a; 声明了一个数组变量。
[]表示该变量是一个数组
int 表示数组里的每一个元素都是一个整数
a 是变量名
但是,仅仅是这一句声明,不会创建数组
有时候也会写成int a[]; 没有任何区别,就是你看哪种顺眼的问题
创建数组的时候,要指明数组的长度。
new int[5]
引用概念:
如果变量代表一个数组,比如a,我们把a叫做引用
与基本类型不同
int c = 5; 这叫给c赋值为5
声明一个引用 int[] a;
a = new int[5];
让a这个引用,指向数组
public class HelloWorld {
public static void main(String[] args) {
int[] a;
a = new int[5];
a[0]= 1; //下标0,代表数组里的第一个数
a[1]= 2;
a[2]= 3;
a[3]= 4;
a[4]= 5;
}
}
.length属性用于访问一个数组的长度
数组访问下标范围是0到长度-1
一旦超过这个范围,就会产生数组下标越界异常
练习-数组最小值,
首先创建一个长度是5的数组
然后给数组的每一位赋予随机整数
通过for循环,遍历数组,找出最小的一个值出来
0-100的 随机整数的获取办法有多种,下面是参考办法之一:
(int) (Math.random() * 100)
Math.random() 会得到一个0-1之间的随机浮点数,然后乘以100,并强转为整型即可。
public class HelloWorld {
public static void main(String[] args) {
int[] a;
a = new int[5];
a[0] = (int) (Math.random() * 100);
a[1] = (int) (Math.random() * 100);
a[2] = (int) (Math.random() * 100);
a[3] = (int) (Math.random() * 100);
a[4] = (int) (Math.random() * 100);
System.out.println("数组中的各个随机数是:");
for (int i = 0; i < a.length; i++)
System.out.println(a[i]);
int min = a[0];
for(int j = 0; j < a.length; j++){
if(a[j]<min){
min = a[j];
}
System.out.println(min]);
}
}
初始化数组
分配空间与赋值分步进行
public class HelloWorld {
public static void main(String[] args) {
int[] a = new int[5]; //分配了长度是5的数组,但是没有赋值
//没有赋值,那么就会使用默认值
//作为int类型的数组,默认值是0
System.out.println(a[0]);
//进行赋值
a[0] = 100;
a[1] = 101;
a[2] = 103;
a[3] = 120;
a[4] = 140;
}
}
分配空间,同时赋值
public class HelloWorld {
public static void main(String[] args) {
//写法一: 分配空间同时赋值
int[] a = new int[]{100,102,444,836,3236};
//写法二: 省略了new int[],效果一样
int[] b = {100,102,444,836,3236};
//写法三:同时分配空间,和指定内容
//在这个例子里,长度是3,内容是5个,产生矛盾了
//所以如果指定了数组的内容,就不能同时设置数组的长度
int[] c = new int[3]{100,102,444,836,3236};
}
}
二、明日计划:
明天不知道出去啥安排,只能用手机学了。
三、问题:
暂时没啥问题。
四、收获:
学了控制流程,创建,初始化数组。
评论