代码从主函数开始逐行向下运行
是一种宏观的代码运行结构
程序员在写代码时碰到了多中可能发生的情况时,会使用选择结构来完成程序。
选择结构主要有两种
if 语句和switch语句
if 和 switch 的区别:
if 既可以对一个单一的值进行判断,也可以对一个区间的值进行判断;switch 只能判断单一的值
基本格式:
if(条件表达式){
当条件为true时执行的代码;
}else{
当条件为false时执行的代码;
}
单行格式:
if(条件表达式){
当条件为true时执行的代码;
}
嵌套if-else形式:
if(条件表达式1){
条件1为true时执行的代码;
if(条件表达式2){
条件2为true时执行的代码;
………………
………………
}else 条件2为false时执行的代码;
}else 条件1为false时执行的代码;
if-else-if形式
if(条件表达式1){
条件1为true是执行的代码;
}else if(条件表达式2){
条件2为真时执行的代码;
}else if(条件表达式3){
条件3为真时执行的代码;
}………………
………………
形如下图是switch语句的工作原理
一般用于多选情况下
switch所要求的变量的数据类型:byte short int char String 枚举
switch(变量){
case 值1:
执行语句1;
break;
case 值2:
执行语句2;
break;
case 值3:
执行语句3;
break;
........
deafult:
执行语句n;
break;
}
循环结构是程序员在编程过程中遇到重复
性问题时会使用循环结构来解决问题
循环结构主要包括两方面内容,for循环和while循环
循环的四要素:
1.循环初始化
指的就是循环从什么时候开始执行
2.循环继续条件
什么情况循环继续执行/反过来说,循环何时结束
3.循环体
就是我们需要被多次循环执行的代码块
4.循环的周期,步长,间距
当前循环和下一次循环之间的变更
for (初始操作;循环鏈续条件;每次迭代后的操作){
循环体;
}
while 循环的语法如下 : while( 循环继缞条件) {
循环体;
}
do-while是先将do后面的循环体执行之后在进入循环
do{
循环体;
} while ( 循环继续条件)
for 循环是已知次数的循环,所以当次数已知时使用for循环
while循环是已知结束条件的循环,所以当已知循环结束条件时使用while循环
/*
数据:a,b,c,d,e,f
操作:提示用户输入、判断方程组是否有解、计算方程组的解、输出
步骤:1、提示用户输入a,b,c,d,e,f
2、判断方程是否有解,按格式输出
*/
import java.util.Scanner;
class ProblemTwo{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1、提示用户输入a,b,c,d,e,f
System.out.print("Enter a,b,c,d,e,f: ");
double a=scanner.nextDouble();
double b=scanner.nextDouble();
double c=scanner.nextDouble();
double d=scanner.nextDouble();
double e=scanner.nextDouble();
double f=scanner.nextDouble();
//2、判断方程是否有解,按格式输出
double m= a * d - b * c;
if(m==0)
System.out.println("The equation has no soluntion");
else
System.out.println("x is "+((e*d-b*f)/m)+" and y is "+((a*f-e*c)/m));
}
}
运行结果
Enter a,b,c,d,e,f: 9.0 4.0 3.0 -5.0 -6.0 -21.0
x is -2.0 and y is 3.0
Enter a,b,c,d,e,f: 1.0 2.0 2.0 4.0 4.0 5.0
The equation has no soluntion
/*
数据:用户输入的两位数number1、彩票的两位数number2、
用户输入两位数的个位num1和十位num2、彩票的个位nu1、nu2
指令:获得num1、num2、nu1、nu2 判断两个数是否完全相同 判断所有数字是否匹配
判断一个数字与彩票上的一个数字匹配 输出
步骤:1、提示用户输入一个两位数number1
2、使计算机产生一个10~99之间的随机数number2
3、分离number1和number2的十位和个位
4、判断数字是否完全相同、是否匹配、是否有一个数字匹配并且输出
注意:需要使用到随机数产生随机数的方法
1、Math.random()产生[0,1)之间的一个dobule型数
2、Random类
*/
import java.util.Scanner;
class ProblemFive{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1、提示用户输入一个两位数number1
System.out.print("请输入一个两位数:");
int number1=scanner.nextInt();
//2、使计算机产生一个10~99之间的随机数number2
int number2=(int)(Math.random()*90+10);
//3、分离number1和number2的十位和个位
int num1=number1%10;
int num2=number1/10;
int nu1=number2%10;
int nu2=number2/10;
//4、判断数字是否完全相同、是否匹配、是否有一个数字匹配并且输出
if(number1==number2){
System.out.println("恭喜您获得10000美元奖金!");
}else if(num1==nu2&&num2==nu1){
System.out.println("恭喜您获得3000美元奖金!");
}else if(num1==nu1||num1==nu2||num2==nu1||num2==nu2){
System.out.println("恭喜您获得1000美元奖金!");
}else{
System.out.println("很遗憾!您没有中奖!");
}
}
}
运行结果:
请输入一个两位数:34
很遗憾!您没有中奖!
请输入一个两位数:78
恭喜您获得1000美元奖金!
/*
数据:世纪j、一个星期中的某一天h、月份m、某月的第几天q、世纪的某一年k、年year
指令:提示用户输入年、月、该月的某一天,计算世纪数j、世纪的某一年k、星期的某一天h
步骤:1、提示用户输入年year
2、提示用户输入月m
3、提示用户输入该月的某一天q
4、判断一月和二月
5、计算世纪数j
6、计算世纪的某一年k
7、计算星期的某一天
8、输出今天是星期几
*/
import java.util.Scanner;
class ProblemSeven{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1、提示用户输入年year
System.out.print("Enter year (eg: 2012): ");
int year=scanner.nextInt();
//2、提示用户输入月m
System.out.print("Enter month 1-12: ");
int m=scanner.nextInt();
//3、提示用户输入该月的某一天q
System.out.print("Enter the day of the month: ");
int q=scanner.nextInt();
//4、判断一月和二月
if(m==1||m==2){
m=12+m;
year=year-1;
}
//5、计算世纪数j
int j=Math.abs(year/100);
//6、计算世纪的某一年k
int k=year%100;
//7、计算星期的某一天
int h=(q+26*(m+1)/10+k+k/4+j/4+5*j)%7;
String weekstr="";
switch(h){
case 0:weekstr="Saturday";break;
case 1:weekstr="Sunday";break;
case 2:weekstr="Monday";break;
case 3:weekstr="Tuesday";break;
case 4:weekstr="Wednesday";break;
case 5:weekstr="Thursday";break;
case 6:weekstr="Friday";break;
}
//8、输出今天是星期几
System.out.println("Day of the week is "+weekstr);
}
}
运行结果
Enter year (eg: 2012): 20
Enter month 1-12: 2
Enter the day of the month: 8
Day of the week is Saturday
/*
数据:三角形的三个点坐标(0,0) (0,100) (200,0)、输入的点的坐标(x,y)、三角形斜边在坐标轴上的方程y=x/2
指令:提示用户输入点的坐标、判断点的位置、输出点的位置
步骤:1、提示用户输入点坐标
2、判断点的位置,并且输出
*/
import java.util.Scanner;
class ProblemNine{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1、提示用户输入点坐标
System.out.print("Enter a point`s x- and y- coordinates : ");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//2、判断点的位置,并且输出
if(x>=0&&x<=200&&y>=0&&y<=100&&y<=x/2){
System.out.println("The point is in the triangle");
}else{
System.out.println("The point is not in the triangle");
}
}
}
运行结果
Enter a point`s x- and y- coordinates : 100.5 25.5
The point is in the triangle
Enter a point`s x- and y- coordinates : 100.5 50.5
The point is not in the triangle
/*
数据:两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2
指令:提示用户输入两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2
计算两中心点的水平距离 竖直距离 判断两个矩形之间关系 输出
步骤:1、提示用户输入两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2
2、计算计算两中心点的水平距离 竖直距离
3、判断两个矩形之间关系并输出
*/
import java.util.Scanner;
class ProblemTen{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1、提示用户输入两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2
System.out.print("Enter r1`s center x-,y-coordinates,width and height:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double l1=scanner.nextDouble();
double h1=scanner.nextDouble();
System.out.print("Enter r2`s center x-,y-coordinates,width and height:");
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double l2=scanner.nextDouble();
double h2=scanner.nextDouble();
//2、计算计算两中心点的水平距离 竖直距离
double d1=Math.abs(x1-x2);//水平距离
double d2=Math.abs(y1-y2);//竖直距离
//3、判断两个矩形之间关系并输出
if((l1/2+l2/2)<=d1||(h1/2+h2/2)<=d2){
System.out.println("r2 does not overlap r1");
}else if(d1+l2/2<=l1/2&&d2+h2/2<=h1/2){
System.out.println("r2 is inside r1");
}else{
System.out.println("r2 overlap r1");
}
}
}
运行结果
Enter r1`s center x-,y-coordinates,width and height:2.5 4 2.5 43
Enter r2`s center x-,y-coordinates,width and height:1.5 5 0.5 3
r2 is inside r1
Enter r1`s center x-,y-coordinates,width and height:1 2 3 5.5
Enter r2`s center x-,y-coordinates,width and height:3 4 4.5 5
r2 overlap r1
Enter r1`s center x-,y-coordinates,width and height:1 2 3 3
Enter r2`s center x-,y-coordinates,width and height:40 45 3 2
r2 does not overlap r1
/*
数据:输出的层数
指令:输出一个数字金字塔
步骤:1、提示用户输入金字塔层数
2、输出金字塔
*/
import java.util.Scanner;
class ProblemFourteen{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1、提示用户输入金字塔层数
System.out.print("Enter the number of line: ");
int line=scanner.nextInt();
//2、输出金字塔
for(int i=0;i<line;i++){
for(int s=line-i;s>=0;s--){
System.out.print(" ");
}
for(int j=-(i);j<1+2*i-(i);j++){
System.out.printf("%3d",Math.abs(j)+1);
}
System.out.println();
}
}
}
运行结果
Enter the number of line: 7
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
6 5 4 3 2 1 2 3 4 5 6
7 6 5 4 3 2 1 2 3 4 5 6 7
class ProblemFifteen_01{
public static void main(String[] args){
for(int i=0;i<6;i++){
for(int j=0;j<=i;j++){
System.out.print((j+1)+" ");
}
System.out.println();
}
}
}
运行结果
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
class ProblemFifteen_02{
public static void main(String[] args){
for(int i=0;i<6;i++){
for(int j=6;j>i;j--){
System.out.print(j+" ");
}
System.out.println();
}
}
}
运行结果
6 5 4 3 2 1
6 5 4 3 2
6 5 4 3
6 5 4
6 5
6
class ProblemFifteen_03{
public static void main(String[] args){
for(int i=0;i<6;i++){
for(int s=5;s>i;s--){
System.out.print(" ");
}
for(int j=i+1;j>0;j--){
System.out.print((j)+" ");
}
System.out.println();
}
}
}
运行结果
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
class ProblemFifteen_04{
public static void main(String[] args){
for(int i=0;i<6;i++){
for(int s=0;s<i;s++){
System.out.print(" ");
}
for(int j=0;j<6-i;j++){
System.out.print((j+1)+" ");
}
System.out.println();
}
}
}
运行结果
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
8、
/*输出
1
1 2 1
1 2 4 2 1
1 2 4 8 4 2 1
1 2 4 8 16 8 4 2 1
1 2 4 8 16 32 16 8 4 2 1
1 2 4 8 16 32 64 32 16 8 4 2 1
1 2 4 8 16 32 64 128 64 32 16 8 4 2 1
*/
class ProblemSixteen{
public static void main(String[] args){
int a;
for(int i=0;i<8;i++){
for(int s=7-i;s>0;s--){
System.out.print(" ");
}
for(int j=(-i);j<=i;j++){
System.out.printf("%4d",a=(int)(Math.pow(2,Math.abs(Math.abs(j)-i))));
}
System.out.println();
}
}
}
运行结果
1
1 2 1
1 2 4 2 1
1 2 4 8 4 2 1
1 2 4 8 16 8 4 2 1
1 2 4 8 16 32 16 8 4 2 1
1 2 4 8 16 32 64 32 16 8 4 2 1
1 2 4 8 16 32 64 128 64 32 16 8 4 2 1
9、
按下列格式输出
ONE
*
**
***
****
*****
******
*******
class Star{
public static void main(String[] args){
for(int line=1;line<=7;line++){
for(int i=1;i<=line;i++){
System.out.print("*");
}
System.out.println();
}
}
}
运行结果
*
**
***
****
*****
******
*******
TWO
*
**
***
****
*****
******
*******
******
*****
****
***
**
*
class Star{
public static void main(String[] args){
for(int i=1;i<=11;i++){
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
运行结果
*
**
***
****
*****
******
*******
******
*****
****
***
**
*
THREE
*
**
***
****
*****
******
*******
******
*****
****
***
**
*
class Star{
public static void main(String[] args){
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
运行结果
*
**
***
****
*****
******
*******
******
*****
****
***
**
*
FOUR
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
class Star{
public static void main(String[] args){
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("* ");
}
System.out.println();
}
}
}
运行结果
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
FIVE
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
class Star{
public static void main(String[] args){
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
if(j==1||j==i||j+i==12){
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
运行结果
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*