java学习资源
https://www.bilibili.com/video/av37413483
1.流程控制语句
1.顺序结构
从上到下 从左到右 有括号先算括号;
public class Test {
public static void main(String[] args) {
//从上往下依次执行
int a = 10;
System.out.println(a);
//从左往右依次执行
System.out.println("5+5="+5+5);//5+5=55
}
}
2.选择结构
if语句执行顺序:
先判断关系表达式1,若为true执行语句体1,结束;若为false,判断关系表达式2;若都不满足 执行else语句后结束。
switch语句执行顺序:
根据传入的key值去找常量值 ,互相匹配则执行相关语句体,直到运行break结束;若都不满足执行default中的语句.
key的类型: byte,short,char,int,String
3.循环结构
for语句执行顺序:
初始化语句 --> 判断语句 --> 循环体语句 --> 控制语句 --> 判断语句 --> 循环体语句…
初始化语句只执行一次
初始化语句中定义的变量 其作用域只在for循环括号内
public class Tesst1 {
public static void main(String[] args) {
int c = 1;
for (int i = 0,c1 =0 ; i < 10;i++,c++,c1++) {//i c1定义在for中,只能用于for作用域,c定义在main方法中,可以用于main方法作用域
System.out.println("你真帅");
System.out.println(c1);
}
System.out.println(c);
}
}
while语句
int i=1; //初始化语句
while(i<=100){
//循环体;
//控制条件语句;
}
do…while语法格式
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
死循环
for(;😉{}
while(true){}
练习题
下面哪个不能用于switch语句的参数? C
A. byte b=1; B. int i= 1; C.boolean b=false; D.char c=‘a’;
-
下面程序执行后输出的结果是什么? C
for(int I=0;I<2;++I){
System.out.println("I is "+I);
}
A. I is 1
I is 2
B. I is 1
C. I is 0
I is 1
D. I is 0 -
求1~100之间不能被3整除的数之和
public class Test{ public static void main(String[] args) { //求1~100之间不能被3整除的数之和 int sum = 0; for(int i = 1 ;i <100;i++){ if( i%3 != 0){ sum+=i; } } System.out.println(sum); } }
-
2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?
public class Test{ public static void main(String[] args) { //2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人? int people = 8; int year = 2006; while(people <20){ people*=1.25; year+=1; } System.out.println(year); System.out.println(people); } }
-
用switch语句实现键盘录入月份,输出对应的季节
// 3~5月为春季
// 6~8月为夏季
// 9~11月为秋季
// 12月~2月为冬季
import java.util.Scanner;
// 用switch语句实现键盘录入月份,输出对应的季节
// 3~5月为春季
// 6~8月为夏季
// 9~11月为秋季
// 12月~2月为冬季
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个月份数字");
int month = input.nextInt();
switch (month) {
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("错误的月份");
break;
}
}
}
-
打印出所有的水仙花数
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如:153 = 13+53+3^3
import java.util.Scanner;
public class Test {
//打印出所有的水仙花数
//所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如:153 = 1^3+5^3+3^3
public static void main(String[] args) {
for(int i = 100;i<1000;i++){
int baiwei = i/100;
int shiwei =i%100/10;
int gewei = i%10;
if(i == baiwei*baiwei*baiwei + shiwei*shiwei*shiwei + gewei*gewei *gewei){
System.out.println(i);
}
}
}
}
- 找出 1 - 100之间所有的包含7或者被7整除的数字
public class Test2 {
//找出 1 - 100之间所有的包含7或者被7整除的数字
public static void main(String[] args) {
for(int i =1;i<=100;i++){
if(i/10 ==7){
System.out.println(i);
}else if(i%7 ==0){
System.out.println(i);
}else if(i%10==7){
System.out.println(i);
}
}
}
}
- 一球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,
问第10次落地时,一共经过多少米,第十次反弹多高
public class Test3 {
//一球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,
//问第10次落地时,一共经过多少米,第十次反弹多高
public static void main(String[] args) {
int count = 0;
double sum = 0;
double huitan = 100;
while(true){
count ++;
if(count ==1){
sum = 100;
}else{
sum+= huitan*2;
}
huitan /=2;
if(count ==10){
break;
}
}
System.out.println(sum);
System.out.println(huitan);
}
}
-
求1 - 100之间的所有的奇数和和偶数和
public class Test4 { //求1 - 100之间的所有的奇数和和偶数和 public static void main(String[] args) { int ji = 0; int ou = 0; for(int i =1;i<=100;i++){ if(i%2==0){ ou+=i; }else{ ji+=i; } } System.out.println(ji); System.out.println(ou); } }
-
使用for循环打印 小写字母a-z 大写字母A-Z
import java.util.Scanner; public class Test { public static void main(String[] args) { //使用for循环打印 小写字母a-z 大写字母A-Z for (int i = 'a'; i < 'z'; i++) { System.out.println((char)i); } System.out.println("---------------------------------------"); for (char i = 'A'; i < 'Z'; i++) { System.out.println(i); } } }
-
键盘录入x的值,计算出y的并输出。
x>=3 y = 2x + 1;
-1<=x<1 y = 2x;
x<-1 y = 2x – 1;import java.util.Scanner; public class Test { public static void main(String[] args) { // 键盘录入x的值,计算出y的并输出。 // x>=3 y = 2x + 1; // -1<=x<1 y = 2x; // x<-1 y = 2x – 1; Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字"); int x = sc.nextInt(); int y = 0; if (x >= 3) { y = 2*x + 1; }else if (-1<=x && x<1) { y = 2*x; }else if (x < -1) { y = 2 * x - 1; }else if (x == 1 || x == 2) { System.out.println("没有对应的计算公式"); return; //直接结束方法,此时外面的System.out.println(y)语句也无法执行(无法执行的原因是return阻断了,而不是y没有值) } System.out.println(y); } }
-
找出1 - 1000之间 能被 7 或者 3 或者 5 整除的数分别有几个
public class Test6 { //找出1 - 1000之间 能被 7 或者 3 或者 5 整除的数分别有几个 public static void main(String[] args) { int chu7 = 0; int chu3 = 0; int chu5 = 0; for(int i =1;i<=1000;i++){ if(i %7 ==0){ chu7+=1; } if(i%3==0){ chu3+=1; } if(i%5==0){ chu5+=1; } } System.out.println("除7的为"+chu7); System.out.println("除3的为"+chu3); System.out.println("除5的为"+chu5); } }
-
假设某人有100,000现金.每经过一次路口需要进行一次交费. 交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000.请写一程序计算此人可以经过多少次这个路口
public class Test7 { //假设某人有100,000现金.每经过一次路口需要进行一次交费. 交费规则为当他现金大于50,000时 //每次需要交5%如果现金小于等于50,000时每次交5,000.请写一程序计算此人可以经过多少次这个路口 public static void main(String[] args) { double money = 100000; int count =0; while(money >=5000){ if(money >50000){ money -=money*0.05; }else{ money -=5000; } count++; } System.out.println(count); System.out.println(money); } }
-
公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
public class Test8 { //公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。 //到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子? public static void main(String[] args) { int day = 0; int sum = 1; while(true){ day+=1; sum=(sum+1)*2; if(day ==7){ System.out.println(sum); break; } } } }
-
自动登录练习
需求: 1.控制台提示用户输入密码
2.用户输入密码
3.如果用户输入的密码不等于1234,回到步骤1
4.如果用户输入的密码等于1234,提示登录成功//方法1 import java.util.Scanner; public class Test { // 需求: 1.控制台提示用户输入密码 // 2.用户输入密码 // 3.如果用户输入的密码不等于1234,回到步骤1 // 4.如果用户输入的密码等于1234,提示登录成功 public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ System.out.println("请输入密码"); String passwd = sc.next(); if( "1234".equals(passwd)){ System.out.println("登陆成功"); break; } } } }
-
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String password;//先声明变量 do { System.out.println("请输入密码"); password = sc.next(); }while(!"1234".equals(password)); System.out.println("登录成功"); } }
贪吃蛇:在键盘上输入一个数,如果是1,代表蛇吃到食物,得分加10,并继续输入,
如果输入的是一个非1的数字,停止程序,输出得分import java.util.Scanner; public class Test { //贪吃蛇:在键盘上输入一个数,如果是1,代表蛇吃到食物,得分加10,并继续输入, //如果输入的是一个非1的数字,停止程序,输出得分 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 0; while(true){ System.out.println("输入一个数字"); int go = sc.nextInt(); if(go ==1){ count +=10; }else{ break; } } System.out.println("您的得分为"+count); } }
-
假设一个简单的ATM机的取款过程是这样的:
首先提示用户输入密码(password),
最多只能输入三次,超过3次则提示用户“密码错误,
请取卡”结束交易。如果用户密码正确,
再提示用户输入取款金额(amount),
ATM机只能输出100元的纸币,一次取钱数要求最低
100元,最高1000元。
若用户输入的金额符合上述要求,则打印输出用户取得钱数,
最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。
假设用户密码是111111,请编程实现。
import java.util.Scanner;
/**
* 假设一个简单的ATM机的取款过程是这样的:
首先提示用户输入密码(password),最多只能输入三次,超过3次则提示用户“密码错误,请取卡”结束交易。
如果用户密码正确,
再提示用户输入取款金额(amount),
ATM机只能输出100元的纸币,一次取钱数要求最低100元,最高1000元。
若用户输入的金额符合上述要求,则打印输出用户取得钱数,
最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。
假设用户密码是111111,请编程实现。
*/
public class Test9 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int i=1 ;i <=3 ;i++){
System.out.println("请输入密码");
String input = sc.next();
if("111111".equals(input)){
System.out.println("密码正确");
break; //退出循环
}else if (i ==3){
System.out.println("密码错误,请取卡");
return; //结束方法
}else{
System.out.println("密码错误,请重新输入,您还有"+(3-i)+"次机会");
}
}
while(true){
System.out.println("输入取款金额");
int amount = sc.nextInt();
if(amount <100 | amount>1000| amount%100!=0){
System.out.println("重新输入金额");
}else{
System.out.println("取出"+amount+"金额");
break;
}
}
System.out.println("交易完成");
}
}
- 将学生考试成绩做评级 90 - 100 为A 80-90位B 70-80为C 60-70为D 60以下为渣子
分别使用ifelse和switch去实现 //if else自己写吧
90 - 99 80-89 70 -79 60-69 60
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
// 将学生考试成绩做评级 90 - 100 为A 80-90位B 70-80为C 60-70为D 60以下为渣子
// 分别使用ifelse和switch去实现
// 90 - 99 80-89 70 -79 60-69 60
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的成绩");
int score = sc.nextInt();
if (score > 100 || score < 0) {
System.out.println("您的成绩不符合要求");
return;
}
int a = score / 10;
switch (a) {
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
default:
System.out.println("E");
break;
}
}
}
- 键盘录入两个数 再录入一个 + - / * % 其中的一个运算符
根据录入的运算符 然后让两个数做对应的运算
使用switch实现下面的改代码
import java.util.Scanner;
public class SwitchDemo3 {
public static void main(String[] args) {
// 键盘录入两个数 再录入一个 + - / * % 其中的一个运算符
// 根据录入的运算符 然后让两个数做对应的运算
// 使用switch实现下面的改代码
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字");
int a = sc.nextInt();
System.out.println("请输入第二个数字");
int b = sc.nextInt();
System.out.println("请输入您要选择的运算:+ - * / %");
String s = sc.next();
switch (s) {
case "+":
System.out.println(a + b);
break;
case "-":
System.out.println(a - b);
break;
case "*":
System.out.println(a * b);
break;
case "/":
System.out.println(a / b);
break;
case "%":
System.out.println(a % b);
break;
default:
System.out.println("不支持的运算");
break;
}
}
}
-
练习:
按照要求补齐程序
for(int x=1; x<=10; x++) {
if(x%3==0) {
//在此处填写代码
}
System.out.println(“Java基础班”);
}
我想在控制台输出2次:“Java基础班“ 应填写: break 或者 return
我想在控制台输出7次:“Java基础班“ 应填写: continue
我想在控制台输出13次 “java基础班” 应填写: System.out.println(“Java基础班”);
-
小娟的妈妈每天给她3元钱,她都会存起来,但是,每当这一天的天数是存钱的第6天或者6的倍数的话,她都会花去5元钱,请问,经过多少天,小娟才可以存到100元钱
public class Test {
public static void main(String[] args) {
// 小娟的妈妈每天给她3元钱,她都会存起来,
// 但是,每当这一天的天数是存钱的第6天或者6的倍数的话,她都会花去5元钱,
// 请问,经过多少天,小娟才可以存到100元钱
int day = 0;
int money = 0;
while(money < 100){
money+=3;
day++;
if (day % 6 == 0) {
money -= 5;
}
}
System.out.println(day);
}
}
-
打印99乘法表
public class Test { public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 1; j < i+1; j++) { System.out.print(j + " * " + i +" = " + (i * j)+"\t"); } System.out.println(); } } }