JavaDay04
Java环境搭建 JDK下载与安装 卸载原来的环境和配置JDK- 删除原来的环境变量,系统–>环境变量–>JAVA_HOME找到值的文件位置–>删除–>再删除环境变量
- path里删除与 Java相关的bin值
- dos窗口,测试是否还有Java环境,java -version
- 搜索JDK8,找到对应版本,同意协议下载安装
- 安装路径(需要记住),建议安装目录非系统盘
- 配置环境变量,系统–>环境变量,添加JAVA-HOME–>变量的值为JDK的安装路径–>配置path变量添加bin值,新建%JAVA-HOME%bin,%JAVA-HOME%jrebin(别的版本需要找jre目录)
- 测试配置环境是否成功,dos窗口,java -version,提示版本号,安装成功
- 安装notepad++(方便文本记录,好处是比记事本识别程序和颜色提示)
- IDE官网:https://www.jetbrains.com/
- 基础开放环境:eclipse早起开发java的工具
- 进入官网,选中IntelliJ IDEA,下载安装,安装时注意路径和32/64位的选择
- Switch相当于if else的另外一种表达式
- Switch使用范围:byte,short,int,char,string,enum
switch (day){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
default:
System.out.println("其它");
}
- 每一句结尾都要有break;
- String在java1.7前是不支持的,1.7版本后支持Switch用String,编译后是把String转hash值
- 使用Switch练习月份是哪个季节
- switch 后面需要{ }
import java.util.Scanner;
public class Bijiao {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch (month){
case 1:
case 2:
case 3:
System.out.println(month+"月是春季");
break;
case 4:
case 5:
case 6:
System.out.println(month+"月是夏季");
break;
case 7:
case 8:
case 9:
System.out.println(month+"月是秋季");
case 10:
case 11:
case 12:
System.out.println(month+"月是冬季"); //打印输出可以直接是“是冬季”
break;
default: //default默认,这里代表其它值或其它情况
System.out.println("请输入正确的月份");
}
}
}
优化后:
import java.util.Scanner;
public class Bijiao {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入要识别的月份");
int month = s.nextInt();
switch (month){
case 1:
case 2:
case 3:
System.out.println(month+"月是春天");
break;
case 4:
case 5:
case 6:
System.out.println(month+"月是夏天");
break;
case 7:
case 8:
case 9:
System.out.println(month+"月是秋天");
break;
case 10:
case 11:
case 12:
System.out.println(month+"月是冬天");
break;
default:
System.out.println("请输入正确的月份");
break;
}
}
}
While和do-while循环语句
-
关键词 简介 while 条件为true时,重复执行 do-while 条件为true时,重复执行,至少会执行一次
public class Bijiao {
public static void main(String[] args) {
int i = 1;
while(i<7){ //while 表达式成立就会一直循环
System.out.println(i);
i++;
}
//do while 无论是否成立,先执行一次,在进行判断
//打印1到5
int i = 1;
do{
System.out.println(i);
i++;
}while(i<6);
}
}
-
使用Scanner获取一个整数,然后使用while计算整数的阶乘
-
M的阶乘=M*(M-1)*(M-2)****1
//联系一个整数的阶乘计算 import java.util.Scanner; public class Bijiao { public static void main(String[] args) { //计算阶乘,N的阶乘=N*(N-1)*(N-2)***1 Scanner sc = new Scanner(System.in);//令 sc 是控制台的输入值 System.out.println("请输入要计算阶乘的整数"); int n = sc.nextInt();//int n 为整数的计算 int i = 1; //i=1是计算阶乘到1 才结束计算 while(n>0){//n>o,控制台输入的整数>0开始计算循环 i*=n; n--;//每次乘法算完后,n自减一次 } System.out.println("的阶乘是:"+i); } }
比较for 和while
public class Bijiao {
public static void main(String[] args) {
//使用while循环打印1-5
int i = 1;
while(i<6){
System.out.println("while循环输出"+i);
i++;
}
//使用for 循环打印1-5
for (int j = 1; j < 6; j++){//for的语句同样有{},
//与while相比,判断的条件一样,但是不一样的
System.out.println("for 循环输出的"+j);
}
}
}
//天朝有一个乞丐姓洪,去天桥要钱
//第一天要了1块钱
//第二天要了2块钱
//第三天要了4块钱
//第四天要了8块钱
//以此类推
//问题: 洪乞丐干10天,收入是多少?
import java.util.Scanner;
public class Bijiao {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);//sc 为识别控制台输入
System.out.println("请输入乞讨的天数:");
int day=sc.nextInt();//day=输入的值
int salary=1;//薪水salary 从第一天开始计算
int sum=1;//合计sum也是从第一天开始计算
if(day>0){//if 判断输入的天数是否>o正常值,其它情况else
for(int i=1;i
//天朝有一个乞丐姓洪,去天桥要钱
//第一天要了1块钱
//第二天要了2块钱
//第三天要了4块钱
//第四天要了8块钱
//以此类推
//问题: 洪乞丐干10天,收入是多少?
import java.util.Scanner;
public class Bijiao {
public Bijiao(int day){
int Money = 0;//每天的收入
int MoneyAll = 0;//总共的收入
for (int i = 1;i <= day;i++){//i控制循环,同事也代表天数
if (i< 2){
Money = i;
System.out.println("这是您工作的第"+i+"天,"+"收获"+Money+"元。");
}else{
Money = Money * 2;
System.out.println("这是您工作的第"+i+"天,"+"收获"+Money+"元。");
}
MoneyAll += Money;
}
System.out.println("您一共工作"+day+"天,"+"总共收获了"+MoneyAll+"元。");
}
public static void main(String[] args) {
Bijiao test = new Bijiao(10);
}
}
continue,继续下一个循环
实例:如果是双数,后面的代码不执行,直接进行下一个循环
public class Hello {
public static void main(String[] args) {
//打印单数
for (int j = 0; j < 10;j++){
if (0==j%2)//%2代表余2,是否为双数的判断
continue;//如果是双数,后面的代码不执行,直接下一个循环
System.out.println(j);
}
}
}
break,结束循环
实例:直接结束当前for循环
public class Hello {
public static void main(String[] args) {
for (int j = 0; j < 10;j++){
if (0==j%2)
break;//如果是双数,直接结束循环
System.out.println(j);
}
}
}
实际练习:
假设你月收入是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
结束外部循环
- break;只能结束当前循环
public class HelloWorld{
public static void main(String[] args){
//打印单数
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println(i+":"+j);
if(0==j%2)
break; //如果是双数,结束当前循环
}
}
}
}
-
借助boolean变量结束外部循环
需要在内部循环中修改这个变量值,每次内部循环结束后,都要在外部循环中判断,这个变量的值
public class HelloWorld {
public static void main(String[] args) {
boolean breakout = false; //是否终止外部循环的标记
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println(i + ":" + j);
if (0 == j % 2) {
breakout = true; //终止外部循环的标记设置为true
break;
}
}
if (breakout) //判断是否终止外部循环
break;
}
}
}
-
使用标签结束外部循环
在外部循环前一行,加上标签
在break的时候使用该标签
即能达到结束外部循环的效果
public class HelloWorld{
public static void main(String[] args){
//打印单数
outloop://outloop这个标示是可以自定义的,不是主要词汇都可以
for (int i = 0;i < 10; i++){
for (int j = 0; j < 10; j++){
System.out.println(i+":"+j);
if(0==j%2)
break outloop;//如果是双数,结束外部循环
}
}
}
}
实例练习,水仙花数定义:
1. 一定是3位数
2. 每一位的立方,加起来恰好是这个数本身,比如153=111+555+333
寻找所有的水仙花数
public class HelloWorld{
//水仙花数,一定是3位数,每一位的立方加起来就是本身
//153=1*1*1+5*5*5+3*3*3
//问题:寻找所有水仙花数
public static void main(String[] args) {
//分析:3位数,把百位、十位、个位分开
for(int i=100;i<1000;i++){//给出取值的范围,是3位数<1000
int a = i%10; //取个位上的数
int b = i%100/10; //取十位的数
int c = i/100;//取百位的数
if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==i){
System.out.println(i);
}
}
}
}
实例练习,寻找某两个数相除,其结果 离黄金分割点 0.618最近
分母和分子不能同时为偶数
分母和分子 取值范围在[1-20]



