Java小白的成长(基础篇)3 上

       Everybody大家好,今天咋们来一起探讨一下关于流程控制语

首先,我们知道他有三种结构,分别是顺序,选择,循环

顺序结构

关于顺序结构咋们就不在多多讲解了,顺序结构就是代码从主函数开始逐行向下运行,简单的来说就是按顺序运行。顺序结构是一种宏观的代码运行结构。

选择结构

选择结构他顾名思义就是,给出条件,你进行选择,选择适合你,在进行程序的执行

他有两种格式,分别是if-else语句 和 switch语句

      if-else语句 

他的基本结构是这样的,基本格式


			if(条件表达式){
			      满足条件表达式时,执行的代码;
			}else{
			      不满足条件表达式时,执行的代码;
			}
			

单if语句


			if(条件表达式){
			     当满足条件表达式时,执行的代码;
			}
			

嵌套if-else形式


			if(条件1){
			      当满足条件表达式时,执行的代码;
			      if(条件2){
			          当满足条件表达式二时,执行的代码;
			      }else{
			          当不满足条件表达式二时,执行的代码;
			      }
			}else{
			      当不满足条件表达式一时,执行的代码;
			}
			
			

if-else if


			if(条件1){满足条件表达式一执行的代码;

			}else if(条件2){满足条件表达式二执行的代码;

			}else if(条件3){满足条件表达式三执行的代码;

			}else{以上条件均不满足时,执行此代码;

			}

switch语句

咋们来看一看他们的基本格式

switch(变量){
    case 值1:
          执行语句1;
          break;
    case 值2:
          执行语句2;
          break;
    case 值3:
          执行语句3;
          break;
    ........
    deafult:
          执行语句n;
          break;
}

咋们来举一个简单的例子

switch (h){
            case 2:dayOfweek = "Monday";
                break;
            case 3:dayOfweek = "Tuesday";
                break;
            case 4:dayOfweek = "Wednesday";
                break;
            case 5:dayOfweek = "Thursday";
                break;
            case 6:dayOfweek = "Friday";
                break;
            case 0:dayOfweek = "Saturday";
                break;
            case 1:dayOfweek = "Sunday";
                break;
        }

当h为的2时候,执行case2,为3的时候,执行case3,以此类推;当都不满足的时候,执行deafult语句

循环结构

循环结构主要是解决重复性执行的代码,有for语句和While语句

循环有四要素:

1.循环初始化:指的就是循环从什么时候开始执行
2.循环继续条件:什么情况循环继续执行/反过来说,循环何时结束
3.循环体:就是我们需要多次循环执行的代码块
4.循环的步长

for语句(已知循环的次数)

for(循环初始化;循环继续条件;循环的步长){

     循环体

}

咋们举个例子

*
**
***
****

for(int line=1;line<=4;line++){
    for(int i = 1;i<=line;i++){
      System.out.println("*");  
    }
}

第一个for里面,line表示行数,第二个for里面,是需要执行的语句,输出*,在for循环里面,个人认为line++和++line是一个意思,别搞混了,都是先+1在执行;

*
**
***
**6-|6-i|
*

for(int i= 1;i<=11;i++){
	    for(int j = 1;j<=i&&j<=12-i;j++);{
	        System.out.print("*");
	    }
	    System.out.println();
	}

 

while循环(不知循环次数但是已知结束条件)

 while 循环的语法如下 :

 while( 循环继续条件){  
         // 循环体
           语句;
}

While(true){

}

死循环:循环一直不出来,CPU在一直执行循环体
for(;;){
    System.out.println("for死循环")
}
While(true){
    System.out.println("While死循环")
}
 

实战演练

3.1(代数:解一元二次方程)可以使用下面的公式求一元二次方程ax^2+bx+c=0的两个根

 


/*

数据:a b c delt r1 r2

步骤:

1.提示用户输入abc三个参数

2.计算delt=b*b-4*a*c

3.判断delt的值

    3.1 delt>0

        输出两个解

    3.2 delt==0

        输出一个解

    3.3 delt<0

        无实数解

*/

import java.util.Scanner;

class  Demo03_01{

    public static void main(String[] args){

        //1.提示用户输入abc三个参数

        Scanner scanner=new Scanner(System.in);

        System.out.print("请输入a,b,c:");

        double a=scanner.nextDouble();

        double b=scanner.nextDouble();

        double c=scanner.nextDouble();

        //2.计算delt=b*b-4*a*c

        double delt=b*b-4*a*c;

        //3.判断delt的值

        if(delt>0){

            double r1=(-b+Math.sqrt(delt))/(2*a);

            double r2=(-b-Math.sqrt(delt))/(2*a);

            System.out.printf("r1=%.2f,r2=%.2f",r1,r2);

        }else if(delt==0){

            double r=(-b-Math.sqrt(delt))/(2*a);

            System.out.printf("r=%.2f",r);

        }else{

            System.out.println("无实数解!");

        }

    }

}

3.2

可以使用编程练习题1.13中给出的Crammer规则解线性方程组


/*

  数据:a b c d e f 

 步骤:

 1.输入数值

 2.判断k的值

 3.计算x y

 */

import java.util.Scanner;

public class Text02 {

		public static void main(String [] args) {

			//1.输入数值

			Scanner input = new Scanner(System.in);

			System.out.print("请输入a、b、c、d、e、f的值:");

			double a = input.nextDouble();

			double b = input.nextDouble();

			double c = input.nextDouble();

			double d = input.nextDouble();

			double e = input.nextDouble();

			double f = input.nextDouble();

			//2.判断k的值

			double k = a * d - b * c ;

			if(k == 0) 

				System.out.println("无结果 ");

			else {

				//3.计算x y

				double x = (e * d - b * f)/(a * d - b * c);

				double y = (a * f - e* c)/(a * d - b * c);

				System.out.println("x的值:" + x +"y的值:" + y);

			}	

			

		}

}

			


3.3编写一个程序,提示用户输入代表今天日期的数字(周日为0)

数据:今天的周几 未来的天数 未来的周几
(今天的周几+未来的天数)%7=未来的周几
步骤:
1.输入今天是周几
2.输入未来的几天
3.打印未来的几天是周几

import java.util.Scanner;
public Class Test3{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("今天是周几:");
        int today = in.nextInt();
        System.out.println("未来的几天:";)
        int future = in.nextInt();
        int futureDay  = (today + future)%7;
         String todayStr="";
        String futureDayStr="";
        
        if(today==0){
            todayStr="周日";
        }else if(today==1){
            todayStr="周一";
        }else if(today==2){
            todayStr="周二";
        }else if(today==3){
            todayStr="周三";
        }else if(today==4){
            todayStr="周四";
        }else if(today==5){
            todayStr="周五";
        }else if(today==6){
            todayStr="周六";
        }

        if(futureDay==0){
            futureDayStr="周日";
        }else if(futureDay==1){
            futureDayStr="周一";
        }else if(futureDay==2){
            futureDayStr="周二";
        }else if(futureDay==3){
            futureDayStr="周三";
        }else if(futureDay==4){
            futureDayStr="周四";
        }else if(futureDay==5){
            futureDayStr="周五";
        }else if(futureDay==6){
            futureDayStr="周六";
        }
        System.out.println("今天是"+todayStr+",未来的日子是"+futureDayStr);
    }
}

    }
}

3.4

编写一个程序,提示用户输入一个三位的整数,然后确定它是否是回文数字,从左到右,以及从右到左都是一样的话,这个数字称为回文数字。

步骤:1.先输入一个Sum=0

2.sum=sum*10+num%10  

num/=10

3.几位数字就上面的的循环语句就循环几次

import java.util.Scanner;
pubilc class Test4{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num = scanner.nextInt();
        int temp = num;
        int sum = 0;
        sum = sum*10+num%10;
        num/=10;
        sum = sum*10+num%10;
        num/=10;
        sum = sum*10+num%10;
        num/=10;
        if(sum==temp){
            System.out.println("是回文");
        }
        else{
            System.out.println("不是回文");
        }
    }

3.5 假设你想开发一个玩彩票的游戏,程序随机产生一个两位数的彩票

数据:电脑随机产生一个两位数字 用户输入一个两个数字
要是用户输入的数字与电脑的数字完全匹配,奖金10000
用户的输入与电脑的数字,顺序不匹配,数字一样 奖金3000
用户输入与电脑之匹配一个数字 奖金1000
步骤:
1.提示用户输入一个两位数字
2.计算机随机产生一个两位数字
3.将两者进行对比 评选奖金
10000 com == usr
3000  com/10 == usr%10 && com%10 == usr/10
1000  com/10 == usr/10 || com/10 ==usr%10 || com%10 == usr/10 || com%10 == usr%10


import java.util.*;
public class Test5{
    pubilc static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("请输入你得彩票码:");
        int usr = in.nextInt();
        Random sc = new Random();
        int com = sc.Random(100);
        if(usr>=10 && usr<=99){
         if(usr==com){
             System.out.println("恭喜你获得奖金10000美元");
         }
        else if(com/10 == usr%10 && com%10 == usr/10)
        {
            System.out.println("恭喜你获得奖金3000美元");
        }
        else if(com/10 == usr/10 || com/10 ==usr%10 || com%10 == usr/10 || com%10 == usr%10)
        {
        System.out.println("恭喜你获得奖金1000美元");
        }
        else{
            System.out.println("很遗憾你没有获奖");
        }
        }else{
            System.out.println("您输入的数字有误,请重新输入");
        }
    }
}

3.6剪刀,石头,布的游戏,编写可以玩流行的剪刀,石头,布游戏的程序

数据:电脑随机产生的一个数字 用户输入一个数字
步骤:
1.提示用户输入一个数字
2.计算机随机产生一个数字
3.将两个数字进行对比,分输赢
平局 com==usr
用户赢 usr=0 com=2 || usr=1 com=0 || usr=2 com=1
用户输 剩下的都是用户输
 

import java.util.Scanner;
pubilc class Test6{
    public static void main(String[] args){
     Scanner scanner = new Scanner(System.in);
     System.out.println("请输入 剪刀0 石头1 布2:");
     int usr = scanner.nextInt();
     Random random = new Random();
     int com = random.nextInt(3);/*Random随机函数*/
     String usrStr="";
     String comStr="";
switch(usr){
    case 0:
    usrStr = "剪刀";
    break;
    case1:
    usrStr = "石头";
    break;
    case 2:
    usrStr = "布";
    break;
    }
swith(com){
    case 0:
    comStr = "剪刀";
    break;
    case 1:
    comStr = "石头";
    break;
    case 2:
    comStr = "布";
    break;
}
 if(usr==com){
            System.out.printf("用户是%s,电脑是%s,平局",usrStr,comStr);
        }else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
            System.out.printf("用户是%s,电脑是%s,用户赢",usrStr,comStr);
        }else{
            System.out.printf("用户是%s,电脑是%s,用户输",usrStr,comStr);
        }
    }
}

3.7泽勒一致性是由克里斯汀.泽勒开发的用于计算某天星期几的算法

步骤:1.你需要对1月和2月进行改变,因为他说的是上一年的13和14

2.输入年,月,日

import java.util.*;
pubilc class Test7{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = in.nextInt();
         System.out.println("请输入月份:");
        int month = in.nextInt();
         System.out.println("请输入几号:");
        int day = in.nextInt();
     switch (month){
            case 1:month = 13;
                year--;
                break;
            case 2:month = 14;
                year--;
                break;
        }
        int j = Math.abs (year/100),k = year%100;
        int h = (day+(int)(26*(month+1)/10)+k+(int)(k/4)+(int)(j/4)+5*j)%7;
        String dayOfweek = null;
        switch (h){
            case 2:dayOfweek = "Monday";
                break;
            case 3:dayOfweek = "Tuesday";
                break;
            case 4:dayOfweek = "Wednesday";
                break;
            case 5:dayOfweek = "Thursday";
                break;
            case 6:dayOfweek = "Friday";
                break;
            case 0:dayOfweek = "Saturday";
                break;
            case 1:dayOfweek = "Sunday";
                break;
        }
        System.out.println ("Day of the week is "+dayOfweek);
    }

}

3.8几何,判断点是否在圆内?

.

 

 public class Test8{
      pubilc static void mian(String[] args){
          Scanner in =new Scanner(System.in);
          System.out.println("请输入点的座标:");
          Double x = in.nextDouble();
          Double y = in.nextDouble();
          Double x0 = 0;
          Double y0 = 0;
          Double r = 10;
          Double dis = Math.sqrt(Math.pow(x-x0,2)+Math.pow(y-y0,2));
          if(dis > r){
              System.out.println("点在圆外");
          }
          else if(dis = r){
              System.out.println("点在圆上"):
          }
          else{
              System.out.println("点在圆内");
          }
      }
  }

3.9几何:点是否在三角形内,假设一个直角三角形在一平面上

用到高中的知识点,那条直线的座标,Y=-1/2x+200
1.提示用户输入一个点的座标
2.先大致判断一下座标的范围
3.在精确的判断座标的范围

import java.util.Scanner;
public class Demo15 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter x,y:");
		double x=scanner.nextDouble();
		double y=scanner.nextDouble();
		if(x>=0&&x<=200){
			if((200-x)/y>=2){
				System.out.println("in");
			}
		}
		System.out.println("out");
	}
}

3.10几何:两个矩形


/*

数据:大矩形的中点座标、宽、高;小矩形的宽、高、中点座标

步骤:

1.先输入大矩形的中心,宽和高

2.再输入小矩形的中心,宽和高

3.找小矩形在大矩形中极限

4.找小矩形与大矩形重叠的极限

*/

import java.util.Scanner;

class Demo03_10{

    public static void main(String[] args){

        Scanner scanner=new Scanner(System.in);

        //1.先输入大矩形的中心,宽和高

        System.out.print("请输入第1个矩形的信息:");

        double x1=scanner.nextDouble();

        double y1=scanner.nextDouble();

        double w1=scanner.nextDouble();

        double h1=scanner.nextDouble();

        //2.再输入小矩形的中心,宽和高

        System.out.print("请输入第2个矩形的信息:");

        double x2=scanner.nextDouble();

        double y2=scanner.nextDouble();

        double w2=scanner.nextDouble();

        double h2=scanner.nextDouble();

         //3.找小矩形在大矩形中极限

        double inXMin=x1-(w1-w2)/2;

        double inXMax=x1+(w1-w2)/2;

        double inYMin=y1-(h1-h2)/2;

        double inYMax=y1+(h1-h2)/2;

        //4.找小矩形与大矩形重叠的极限

        double outXMin=x1-(w1+w2)/2;

        double outXMax=x1+(w1+w2)/2;

        double outYMin=y1-(h1+h2)/2;

        double outYMax=y1+(h1+h2)/2;

        if(x2>=inXMin&&x2<=inXMax&&y2>=inYMin&&y2<=inYMax){

            System.out.println("小矩形在大矩形里面!");

        }else if(x2<=outXMin||x2>=outXMax||y2<=outYMin||y2>=outYMax){

            System.out.println("小矩形在大矩形外面!");

        }else{

            System.out.println("小矩形和大矩形相交!");

        }

    }

}

3.11统计正数和负数的个数,然后计算这些数字的平均值

步骤:1.输入一个数字

2.判断他的正负

3.进行相加

4.输出

 

Class Test11{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int sum=0;//总和
        int positives=0;//正数的个数
        int negatives=0;//负数的个数
        System.out.println("请输入若干个个数字:");
        While(true){
              int num=in.nextInt();
              if(num!=0){
                  sum+=num;
                  if(num>0){
                      positives++;
                  }else{
                      negatives++;
                  }
              }else{
                  break; //跳出循环
              }
        }
      if(positives+negatives==0){
          System.out.println("没有其他数字的输入,除了0");
      } else{
          System.out.println("正数的个数"+postives);
          System.out.println("负数的个数"+negatives);
          System.out.println("输入的总数"+positives+negatives);
          System.out.println("平均值"+sum/(positives+negatives));
      }  
         
    }
}

3.12设输入的两个整数位n1和n2.已知1是一个公约数,但是它

步骤:1.输入两个整数

2.判断最大公约数,较方便的,需要以小的那个数为基准

3.从小的数反着除,两者同时取余为0,证明为他们的最大公约数

4.输出

Class Test12
{
    public static void main (String[] args){
        Scanner in =new Scanner(System.in)
        System.out.println("请输入两个数字:");
        int n1=in.nextInt();
        int n2=in.nextInt();
        int gcd=1;
        for(int i=n1<n2?n1:n2;i>=1;i--){
            if(n1%i==0&&n2%i==0){
                gcd=i;
                break;
            }
        }
        System.out.println(gcd);
    }
}

3.13

编写一个程序,读入一个整数,然后以升序现实它的所有最小因子,例如,输入的整数是120,那么输出的就应是2,2,2,3,5

步骤:1.输入一个整数

2.从2开始除,如果,为0,就继续除2,当除2有余数之时,进行下一位的除,直到为1

3.输出

Class Test13{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num = in.nextInt();
        while(true){
            for(int i=2;i<=unm;i++){
                if(num%i==0){
                    System.out.println(i+"");
                    num=num/i;
                    break;
                }
            }
            if(num==1){
                break;
            }
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章