基本结构:顺序结构,分支结构,循环结构
if-else
if(条件表达式1){
执行代码块1;
}
else {
执行表达式2
}
if(条件表达式1){
执行代码块1;
}
else if(条件表达式2){
执行表达式2
}
......
else{
}
定义三个数,找出最大的数
//写的比较复杂
public class Test {
public static void main(String[] args) {
int a = 153;
int b = 345;
int c = 618;
if(a>b){
if(a>c){
System.out.println("最大数为:"+a);
}else{
System.out.println("最大数为:"+c);
}
}
else if(b>c){
System.out.println("最大数为:"+b);
}
else{
System.out.println("最大数为:"+c);
}
}
}
//这个感觉更好一点
public class Test {
public static void main(String[] args) {
int a = 153;
int b = 345;
int c = 618;
int max;
if(a>b && a>c){
max=a;
}else if(b>a && b>c){
max = b;
}
else{
max=c;
}
System.out.println("最大值为:"+max);
}
}
声明两个double变量赋值,判断第一个数大于10.0,第二个数小于20.0,打印之和,否则乘积
public class ZUOYE {
public static void main(String[] args) {
double a = 153.0;
double b = 5.0;
double sum;
if(a>10.0 && b<20.0){
sum=a+b;
}
else{
sum=a*b;
}
System.out.println(sum);
}
}
这些都太简单,已经不想练习,不想再往上打了,复习进度太慢了。。。。
输入语句 Scanner
具体步骤
1.导包:import java.util.Scanner;
2.Scanner的实例化; Scanner scan = new Scanner (System.in)
3.调用Scanner类的相关方法,来获取指定的变量。 int num = scan.nextInt();
岳小鹏参加Java考试,他和父亲岳不群达成承诺: 如果:成绩为100分时,奖励一辆BMW; 成绩为(80,99]时,奖励一台iphone ; 当成绩为[60,80]时,奖励一个iPad; 其它时,什么奖励也没有。 请从键盘输入岳小鹏的期末成绩,并加以判断
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan =new Scanner(System.in);
int score = scan.nextInt();
if(score==100){
System.out.println("BMW");
}
else if(score>80 && score<=99){
System.out.println("Iphone");
}
else if(score>60&&score<=80){
System.out.println("ipad");
}
else{
System.out.println("none");
}
}
}
虽然简单,虽然浪费时间,但多敲敲没坏处
狗的年龄问题:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner scan =new Scanner(System.in);
int dogage = scan.nextInt();
double age;
if(dogage>2){
age = 2*10.5+(dogage-2)*4;
}
else{
age = dogage*10.5;
}
System.out.println("狗的年龄为"+age);
}
}
Switch-case
格式:
switch(表达式){
case 常量1:
执行语句1;
//break;
case 常量2:
执行语句2;
//break; ...
default:
执行语句n:
//break;
}
说明:
- 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,进入相应case结构中,执行相关语句。 当调用完执行语句后,则仍然继续向下执行其他case语句,直到遇到break关键字或末尾结束为止。
break, 可以使用switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。
switch结构中的表达式,只能是如下的六种数据类型之一:byte、short、char、int、枚举类型(JDK5.0)、String类型(JDK7.0)
case 之后只能声明常量。不能声明范围。
break关键字是可选的,加不加根据实际情况。
default:相当于if-else结构中的else。
default 结构是可选的,而且位置是灵活的。
编写程序:
从键盘上输入2020年的“month”和“day”, 要求通过程序输出输入的日期为2019年的第几天。
import java.util.Scanner;
class DayTest{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入2020年的month");
int month = scan.nextInt();
System.out.println("请输入2020年的day");
int day = scan.nextInt();
//定义一个变量来保存天数
int sumDays = 0;
switch(month){
case 12:
sumDays += 30;
case 11:
sumDays += 31;
case 10:
sumDays += 30;
case 9:
sumDays += 31;
case 8:
sumDays += 31;
case 7:
sumDays += 30;
case 6:
sumDays += 31;
case 5:
sumDays += 30;
case 4:
sumDays += 31;
case 3:
sumDays += 29;
case 2:
sumDays += 31;
case 1:
sumDays += day;
}
System.out.println("2020年" + month + "月" + day + "日是当年的第" + sumDays + "天");
}
}
for循环
格式
for(①初始化部分;②循环条件部分;④迭代部分){ //循环条件是布尔类型
③循环体部分;
}
练习:
遍历100以内的偶数 偶数和 偶数个数
int sum;
int a = 0;
for(int i = 0;i <= 100;i++){
if(i % 2 ==0){
System.out.println(i);
sum += i;
a++;
}
}
System.out.println(sum);
System.out.println(a);
编写程序从1循环到150,并在每行打印一个值, 另外在每个3的倍数行上打印出“foo”, 在每个5的倍数行上打印“biz”, 在每个7的倍数行上打印输出“baz”。
public class Test {
public static void main(String[] args) {
for(int i = 1;i<=150;i++){
System.out.print(i);
if(i%3==0){
System.out.print("foo ");
}
if (i%5==0){
System.out.print("biz ");
}
if (i%7==0){
System.out.print("baz ");
}
System.out.println();
}
}
}
输入两个正整数m和n,求其最大公约数和最小公倍数。 比如:12和20的最大公约数是4,最小公倍数是60。说明:break关键字的使用
//求最大就倒着找,求最小就正着找,找到第一个就break
public class Test {
public static void main(String[] args) {
int m = 12;
int n = 20;
for(int i = 12;i>1;i--){
if(m%i==0 && n%i==0){
System.out.println("最大公约数为: "+i);
break;
}
}
for(int i = 20;i<=m*n;i++){
if(i%m==0 && i% n==0){
System.out.println("最小公倍数: "+i);
break;
}
}
}
}
While循环
结构
①初始化部分
while(②循环条件部分){
③循环体部分;
④迭代部分;
}
说明:
写while循环千万要小心不要丢了迭代条件。一旦丢了,就可能导致死循环!
2.写程序要避免死循环。
3.能用while循环的,可以用for循环,反之亦然。二者可以相互转换。
区别:for循环和while循环的初始化条件部分的作用范围不同。
算法:有限性。
do-while循环
结构
①初始化条件
do{
③循环体;
④迭代条件;
}
while(②循环条件 布尔类型);
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
public class Test {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner scan = new Scanner(System.in);
int zhengs = 0;
int fus = 0;
while(true){ //进入循环
System.out.println("输入一个整数");
int num =scan.nextInt();
//break;
if(num > 0){
zhengs++;
}
else if(num<0){
fus++;
}
else{ //跳出循环
break;
}
}
System.out.println("正数:"+zhengs);
System.out.println("负数:"+fus);
}
}
嵌套循环:
练习
输出:
*
**
***
****
*****
public class Test {
public static void main(String[] args) {
for(int j=1;j<=5;j++){
for(int i=1;i<=j;i++){
System.out.print("*");
}
System.out.println();
}
}
}
*****
****
***
**
*
for(int j=5;j>=0;j--){
for(int i=5;i>=(6-j);i--){
System.out.print("*");
}
System.out.println();
}
//或者下面这种:
for(int j=1;j<=5;j++){
for(int i=1;i<=(6-j);i++){
System.out.print("*");
}
System.out.println();
}
九九乘法表
public class Main {
public static void main(String[] args) {
for(int j=1;j<=9;j++){
for(int i=1;i<=j;i++){
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
}
输出100以内的质数
public class Test {
public static void main(String[] args) {
boolean isFlag=true;
for(int j=2 ;j<=100;j++){
for(int i=2;i<j;i++){
if(j%i==0){
isFlag=false;
break; //优化
}
}
if(isFlag==true){
System.out.println(j);
}
isFlag=true; //重置isFlag
}
}
}
break和continue
public class Test {
public static void main(String[] args) {
for(int i = 1;i <= 4;i++){
if(i % 4 == 0){
break; //默认跳出当前循环,输出123
//continue; //跳出当次循环,输出123567910
}
System.out.print(i);
}
}
}
public class Test {
public static void main(String[] args) {
for(int i = 1;i <= 4;i++){
for(int j =1;j <=10; j++){
if(j % 4 == 0){
// break; //默认跳出当前循环,输出123 三行
continue; //跳出当次循环,输出123567910 三行
}
System.out.print(j);
}
System.out.println();
}
}
}