JAVA那些事(二)程序控制结构

发布时间:2023年12月22日

目录

语句及程序结构

正文

补充拓展:

控制流语句

条件语句

if语句:

Switch语句

循环结构

while循环

do-while循环

for循环

多重循环

跳转语句

break语句

continue语句

return语句

throw语句

补充拓展


语句及程序结构

正文

表达式语句:

表达式语句是最基本的语句类型,它由一个或多个操作符和操作数组成,并返回一个值。

int a = 5 + 7; // 这是一个表达式语句,将整数5和7相加并赋值给变量a

声明语句:

声明语句用于创建新的变量、数组或对象。

int x; // 声明一个整型变量x
String[] names = new String[3]; // 声明一个长度为3的字符串数组

赋值语句

赋值语句将一个值赋给一个变量、数组元素或对象属性。

x = 10; // 将整数值10赋给变量x
names[0] = "Alice"; // 将字符串"Alice"赋给数组names的第一个元素

方法调用语句

方法名(参数)?

System.out.println(“Java ”);

顺序结构

顺序结构是最简单的一种程序结构,程序按照语句的书写次序顺序执行。

e.g.华氏温度转换为摄氏温度

public class Conversion
{
    public static void main(String args[])
    {
        float f,c;
        f=70.0f;
        c=5*(f-32)/9;
       System.out.println("Fahrenheit="+f);
       System.out.println("Centigrade="+c);
    }
}

补充拓展:

JAVA中的"scanf"

我在学JAVA的时候在想有没有想C语言那样的scanf

在Java中,没有直接与C语言中的scanf()函数相对应的函数。但是,可以使用java.util.Scanner类来实现类似的输入功能。

例子:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // 读取整数
        System.out.println("请输入一个整数:");
        int num = input.nextInt();
        System.out.println("你输入的整数是:" + num);

        // 读取浮点数
        System.out.println("请输入一个浮点数:");
        double floatingNum = input.nextDouble();
        System.out.println("你输入的浮点数是:" + floatingNum);

        // 读取字符串
        System.out.println("请输入一个字符串:");
        String str = input.nextLine();
        System.out.println("你输入的字符串是:" + str);

        // 关闭Scanner对象
        input.close();
    }

这个例子中,用户需要在一个输入行中按照整数、浮点数和字符串的顺序输入数据,每个数据之间用空格分隔。然后,程序会依次读取这些数据。

int-->input.nextInt()

float-->input.nextFloat();

double-->input.nextDouble();

String-->input.nextLine()

注意这里需要使用nextLine(),因为nextInt()和nextDouble()不会读取换行符

控制流语句

控制流语句决定了程序的执行顺序,包括条件语句和循环语句。

条件语句

根据条件的真假来选择要执行的代码块

Java语句提供了两条基本的分支选择语句if和switch。if语句应用在“二选一”的条件下,而switch语句应用在“多选一”的条件下。它们都是对条件表达式进行判断,针对不同的结果,决定转向要执行的Java语句

  • if?语句:单条件分支。
  • if-else?语句:双条件分支。
  • switch?语句:多条件分支(基于枚举或整数常量)

if语句

if语句用于测试一个条件,并根据该条件的真假(true或false)来决定是否执行一段代码。基本的if语句语法如下:

if (condition) {
    // 如果条件为真,则执行这里的代码块
}

e.g求解方程 ax+b=0(a≠0)的根

import java.util.Scanner;
public class Main
{
    public static void main(String arge[])
    {
        Scanner input =new Scanner(System.in);
        float a,b,x;
        a=input.nextFloat();
        b=input.nextFloat();
           if (Math.abs(a)>0.000001f)
            {   
                x=-b/a;
                System.out.println("x="+x);
            }

    }
}

?

if-else语句:当条件为真时执行一个代码块,否则执行另一个代码块。

if (condition) {
    // 如果条件为真,则执行这里的代码块
} else {
    // 否则执行这里的代码块
}

if-else-if ladder:可以有多个if-else-if语句,依次检查多个条件,并执行第一个满足的条件对应的代码块。

if (condition1) {
    // 如果条件1为真,则执行这里的代码块
} else if (condition2) {
    // 如果条件1不为真,但条件2为真,则执行这里的代码块
} else if (condition3) {
    // 如果条件1和条件2都不为真,但条件3为真,则执行这里的代码块
} else {
    // 如果所有条件都不为真,则执行这里的代码块
}

e.g编写x,y函数关系

import java.util.Scanner;
public class Main{
  public static void main(String args[])
  {
      Scanner input =new Scanner(System.in);
    float x, y;
    x=input.nextFloat();
    if ( x<0 )   
         y = 0;
    else  if  ( x >0  &&  x <= 10 )  
            y = x;
          else  if  ( x > 10  && x <=  20 )  
                   y = 10;
                else   
                   y = -0.5f * x + 20;
    System.out.println("x="+x);
    System.out.println("y="+y);
   }
}

Switch语句

switch语句用于根据变量的值执行不同的代码块。每个代码块由一个case标签标识。switch语句的基本语法如下:

switch (variable) {
    case value1:
        // 如果变量的值等于value1,则执行这里的代码块
        break;
    case value2:
        // 如果变量的值等于value2,则执行这里的代码块
        break;
    // 可以有多个case标签
    default:
        // 如果变量的值与所有case标签都不匹配,则执行这里的代码块
}

注意:

  • 在每个case标签后的代码块结束时,通常需要使用break语句来退出switch语句,防止继续执行下一个case标签的代码块。如果不使用break,程序会继续执行下一个case标签的代码块,直到遇到break或switch语句结束。
  • switch语句中的变量通常是整型、字符型或枚举类型。
public class Month1 {
public static void main(String args[])
  {
    short month;
    month=Short.parseShort(args[0]);
    switch(month)
    {
      case 1: System.out.println("January"); break;
      case 2: System.out.println("February"); break;
      case 3: System.out.println("March"); break;
      case 4: System.out.println("April"); break;
      case 5: System.out.println("May"); break;
      case 6: System.out.println("June"); break;
      case 7: System.out.println("July"); break;
      case 8: System.out.println("August"); break;
      case 9: System.out.println("September"); break;
      case 10: System.out.println("October"); break;
      case 11: System.out.println("November"); break;
      case 12: System.out.println("December"); 
    }
  }
}

循环结构

循环结构是程序控制流的一种重要方式,它允许程序员重复执行一段代码多次,直到满足某个特定的条件为止。

while循环

while循环在满足特定条件时持续执行循环体内的代码

while (条件) {
    // 循环体内的代码
}

在每次循环开始时,都会先检查条件是否为真。如果为真,则执行循环体;否则,退出循环。

e.g.计算n!

public class Factorial_n {
public static void main(String[] args) {
   int i;
   double s;
   i = 1;
   s = 1;
   int n = Integer.parseInt(args[0]);
   while(i<=n){
     s = s * i;
     i++; 
   }
   System.out.println(n+"!="+s);
 }
}

do-while循环

o-while循环与while循环相似,但有一个关键的区别:do-while循环至少会执行一次,即使初始条件为假(false)。

do {
    // 循环体内的代码
} while (条件);

e.g.?计算1+3+5+…+99

public class Sum1
{
  public static void main(String args[])
   {
     int i=1, s=0;
     do
      {  
         s=s+i;
         i=i+2;
      } while (i<100);
     System.out.println("sum="+s);
     }
   }

for循环

for循环是一种预定义次数的循环,通常用于知道循环需要执行的精确次数。它的基本语法如下:

for (初始化; 条件; 更新) {
    // 循环体内的代码
}
  • 初始化:在循环开始前执行,通常用于设置循环变量的初始值。
  • 条件:在每次循环开始时检查,如果为真(true),则执行循环体;否则,退出循环。
  • 更新:在每次循环结束后执行,通常用于改变循环变量的值,以便在下一次循环中满足或不满足条件。

e.g.以下代码使用for循环打印出从1到10的数字:

for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}
多重循环
for( ; ; )                        //外循环开始
{ ….
    for( ; ; )       //内循环开始
    { ……}       //内循环结束
    while(condition) //内循环开始
    {…….}               //内循环结束
}                                 //外循环结束

e.g.计算输出1!、2!、5!以及它们的和

public class Factorials
{
  public static void main(String args[])
   {
     int i, j;
     long s=0,  k;
     for ( i=1; i<=5;  i++)                       //外循环开始
      {  
        k=1;
        for ( j=1; j<=i;  j++)              //内循环开始
           k=k*j;                       //内循环体,内循环结束
        System.out.println(i+"!="+k);
        s=s+k;
      }                                        //外循环结束
     System.out.println("Total sum="+s);
    }
}

跳转语句

跳转语句是用来改变程序执行流程的控制语句。

break语句

  • break语句用于退出当前的循环或switch语句。
  • 在循环中,当遇到break语句时,程序会立即跳出当前循环,不再执行该循环剩余的部分,并继续执行循环后面的代码。
  • 在switch语句中,break语句用于结束当前case的执行,并退出整个switch语句块。如果不使用break,程序会继续执行下一个case的代码,直到遇到break或switch语句结束。

continue语句

  • continue语句用于跳过当前循环迭代中的剩余代码,并直接开始下一次循环迭代。
  • 当在循环体中遇到continue语句时,程序将立即结束当前迭代,更新循环变量(如果有的话),并检查循环条件是否满足以决定是否进行下一次迭代。
  • 注意,continue语句不会终止整个循环,只会跳过当前迭代中continue语句之后的代码。

return语句

  • return语句用于从一个方法中返回值并结束方法的执行。
  • 在非void方法中,return语句后面通常跟着一个表达式,该表达式的值将作为方法调用的结果返回给调用者。
  • 在void方法中,可以只使用return语句而无需指定任何值,这将立即结束方法的执行并返回到调用者。

throw语句

  • throw语句用于显式地抛出一个异常。
  • 当程序中遇到无法处理的情况或者需要向调用者报告错误时,可以使用throw语句抛出一个异常对象。
  • 执行throw语句后,程序会立即停止当前方法的执行,并开始寻找适当的异常处理器来处理这个异常。

补充拓展

** labelled break和continue语句**

  • 在Java中,可以为循环添加标签,然后使用labelled break或continue语句来跳转到特定的标签处。
  • labelled break语句用于跳出带有特定标签的最内层循环。
  • labelled continue语句用于跳过带有特定标签的当前循环迭代的剩余部分,并开始下一次迭代。

e.g.

outerLoop: for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if (i == 5 && j == 5) {
            break outerLoop; // 跳出外层循环
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}

当i和j都等于5时,程序会使用labelled break语句跳出外层的for循环。

文章来源:https://blog.csdn.net/Miraitowain/article/details/135045989
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。