蓝桥杯java基础

发布时间:2024年01月16日

3. A+B问题III

时间限制:1.000S??空间限制:32MB

题目描述

你的任务依然是计算a+b。

输入描述

输入中每行是一对a和b。其中会有一对是0和0标志着输入结束,且这一对不要计算。

输出描述

对于输入的每对a和b,你需要在相应的行输出a、b的和。

如第二对a和b,他们的和也输出在第二行。

输入示例
2 4
11 19
0 0
输出示例
6
30

在本题中,你的任务仍然是计算a+b,但是会有一对是0和0,标志着输入结束,这意味着我们在遇到这种情况时需要主动退出循环操作,那我们就需要使用到if语句来给程序加上一个退出的条件。

本节课你会学到的内容:

  • if语句
  • 关系运算符
  • 逻辑运算符
  • break语句
  • continue语句

if语句

if语句是一种条件语句,表示假设在某种条件下,代码才可以执行,它的基本结构通常是这样的:

if (condition) {
  // 执行代码块
}

condition也是一个条件判断,通常会返回一个布尔值(即真和假),如果条件为真(true),则执行花括号里面的代码,如果条件为假,则跳过这一段代码块。

如果要执行假设条件不满足的情况应该怎么办呢?比如说去超市买东西,如果有西瓜,我就买一个西瓜,但是没有西瓜的话,我就买一斤苹果,这可以使用到else语句

if (有西瓜) {
  // 如果有西瓜,则执行这里的代码块
} else {
  // 如果没有西瓜,则执行这里的代码
}

此外,我们还可以使用else-if来添加多个分支结构,还是上面的例子,去超市买东西,如果有西瓜,我就买一个西瓜,但是没有西瓜的话,我就买一斤苹果,如果连苹果都没有的话,那我随便买一样水果。

if (有西瓜) {
  // 如果有西瓜,则执行这里的代码块
} else if(有苹果) {
  // 在没有西瓜的情况下,有苹果,则执行这里的代码块
} else {
  // 既没有西瓜,也没有苹果,上面的条件都为假,则执行这里的代码块
}

关系运算符

我们已经知道如何通过if来退出循环了,那退出循环只需要我们输入的值a、b的值和0相等就可以了嘛,不过如何表示a和0相等b和0相等呢?

在数学中,我们通过等于符号=来判定两个数字是否相等,比如1 = 3,?2 = 5, 不过我么已经知道在编程中,只有一个=往往意味着把右边的值赋值给左边的意思,比如int i = 3,就是将3的值赋值给左侧的i, 那我们如何表示两个值相等呢?

答案是两个等于号,?==运算符,?==运算符是关系运算符的一种,用于比较两个值之间是否相等, 所以如果想要判定a和0是否相等,可以使用?a == 0

此外还有一些其他的关系运算符可以比较两个值之间的关系:

  • >: 表示大于
  • <: 表示小于
  • >=: 表示大于等于
  • <=: 表示小于等于
  • !=: 表示不等于

逻辑运算符

可是我们想要的结果是a==0的同时b==0, 也就是a、b的值都等于0,才算循环结束,该如何表示“与”(既要又要)的关系呢?

Java提供了逻辑运算符解决这个问题

  • 逻辑与运算符&&: 当运算符两边的条件判断都为真时,整个结果才为真
  • 逻辑或运算符||: 当运算符两边的条件判断只有一个为真时,结果就为真
  • 逻辑非运算符!: 将条件判断的值取反后返回,真的取反后为假的,假的取反后为真的。

可能初学者不是很好理解,我么可以用小美找工作的例子

  • 逻辑与:小美要在北京找工作 && 月薪大于1w, 其他任何薪资,任何地点都不接受,只有在北京找到了工作并且薪资大于1w, 这个结果才为真,其他情况都是假的。
  • 逻辑或: 小美在北京找工作 || 月薪大于1w, 小美只要在北京找到了工作,或者在别的城市找到了月薪大于1w的工作,两个条件只要有一个满足,结果就为真。
  • 逻辑非: ! 小美在北京找工作, 表示对“小美在北京找工作”进行取反,如果小美在北京找到工作的话,将这一个本来为真的结果进行取反,即结果为假。

所以想要判定a和b的结果是否“都”等于0,可以使用逻辑与,也就是a == 0 && b == 0, 将之作为if语句的条件

// 如果 a和0相等 并且 b和0 也相等
if (a == 0 && b == 0) {
  // 退出循环
}

break退出循环

经过上面的讲解之后,我们可以写出下面的代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
          // 如果输入的a和b都为0
            if (a == 0 && b == 0) {
            }
            System.out.println(a + b);
        }
    }
}

代码的基本结构已经搭建完成,现在我们要填充的部分是代码块中的“结束循环”这一部分。

break就是用来终止离它最近的while、do while、for语句的,break之后的代码都不会再执行。

也就是说,我们只需要在这里填充一句break就可以了。

完整代码如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            if (a == 0 && b == 0) {
                break;
            }
            System.out.println(a + b);
        }
    }
}

延伸

除了break之外,continue也可以用于控制跳出循环,同样的,它也只能出现在for、while和do while循环的内部,只不过它的用法是在执行过程中跳过当前循环迭代的剩余部分,然后继续下一次迭代, 通常用于在某个特定条件下,跳过某些特定的迭代操作,但仍然继续循环

比如下面的例子

while(condition) {
  if (condition) {
    // 当满足条件时,跳过本次迭代,继续下一次循环
    continue;
  }
  // 其他操作
}

所以如果在本题中使用continue会是怎样的呢?

while (scanner.hasNext()) {
  int a = scanner.nextInt();
  int b = scanner.nextInt();
  if (a == 0 && b == 0) {
      continue;
  }
  System.out.println(a + b);
}

当输入的a和b的值都为0时,会跳出本次循环,不再执行System.out.println(a + b);这行语句,也就是说,不再计算a+b的值并输出,但是不会终止循环,而是接着读取下一次输入。

总结

本节课我们学习了if语句,if语句可以用来根据条件判断,然后在某种情况下才去执行对应的代码块,此外我们还学习了逻辑运算符(与或非)和关系运算符(比较值的大小),最后我们学习了break语句,用于在某种情况下退出循环,这些内容都是后面刷题时常用到的。

?java代码实现:

import java.util.Scanner;

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

        int a, b;
        while (sc.hasNext()) {
            // 读取输入的一对a和b
            a = sc.nextInt();
            b = sc.nextInt();

            // 如果a和b都为0,则跳出循环
            if (a == 0 && b == 0) {
                break;
            }

            // 计算a和b的和,并输出结果
            System.out.println(a + b);
        }
    }
}

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