蓝桥杯java基础

4. A+B问题IV

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

题目描述

你的任务是计算若干整数的和。

输入描述

每行的第一个数N,表示本行后面有N个数。

如果N=0时,表示输入结束,且这一行不要计算。

输出描述

对于每一行数据需要在相应的行输出和。

输入示例
4 1 2 3 4
5 1 2 3 4 5
0 
输出示例
10
15

A+B问题IV

前言

本节课你会学习到下列内容:

  • 累加操作
  • 算术运算符
  • 赋值运算符
  • 三元运算符

题目分析

在本题中,你需要计算若干个整数的和,每行第一个数n表示后面有n个数,后面的几个数是输入的整数,如果n为0时,结束输入。

根据之前学习的内容,我们可以写出初步的代码。

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            if (n == 0) {
                break;
            }
        }
    }
}

那么剩下的问题就是对输入的数字进行累加这一部分了。在之前的题目中,每次都是输入固定的两个数字,我们定义了两个变量来接收,但在这里,我们要输入的数字个数是不确定的,由数字n来决定, 总不能要定义n个变量吧?

我们可以事先定义一个变量sum, 用于计算最后的结果,每输入一个数(用变量a来指代),就把输入的数值累加到sum当中,即sum = sum + a, 只需要把这个过程执行n次即可,代码如下:

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            if (n == 0) {
                break;
            }
            int sum = 0;
            while(n-- > 0) {
                int a = scanner.nextInt();
                sum = sum + a;
            }
            System.out.println(sum);
        }
    }
}

将上面的代码复制到题目中,就可以完成提交了,不过我们还可以对代码做出一处小小的改进。

算术运算符

算术运算符主要是进行运算,比如最开始的a + b, 常用的算术运算符有+、-、*、/、%,含义分别是加法、减法、乘法、除法和取模。

整数相除的结果还是整数,如果结果有小数部分,则直接舍弃小数部分。

int a = 1 + 2; // 运算结果为3
int b = 1 - 2; // 运算结果为 -1
int c = 1 * 2; // 运算结果为2
int d = 5 / 2; // 运算结果是2,小数部分被舍弃
int e = 21 % 6; // 结果是3, 意思是计算两个整数相除所得的余数,参与取余运算的运算对象必须是整数类型

赋值运算符

实际上,我们从一开始就在使用赋值运算符了,比如最常用的int i = 0;, 赋值运算符的作用是将右侧表达式的值赋值给左侧的变量。

⚠️ 千万不要混淆相等运算符==和赋值运算符=, 比如写成if (i = j)的形式,if()需要一个boolean类型,而i = j的执行结果不是boolean类型,所以会显示一个编译错误。

除了=这种赋值运算符之外,我们经常会对某个值进行运算后,再把计算的结果赋给这个值,比如sum = sum + a, 将sum的值和a进行运算后,再赋值给sum, 此时我们可以使用复合赋值运算符+=

int sum = 0;
for(int i = 1; i <= 10; i++) {
  sum += i; // 和sum = sum + i是等价的
}

我们通常都使用sum += i的形式来书写代码,而且这种形式也常常用于其他算数运算符,比如-=、*=、/=、%=

sum -= i; // 等价于 sum = sum - i;
sum *- i; // 等价于 sum = sum * i;
sum /= i; // 等价于 sum = sum / i;
sum %= i; // 等价于 sum = sum % i;

最终的代码如下:

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            if (n == 0) {
                break;
            }
            int sum = 0;
            for (int i = 0; i < n; i++) {
                sum += scanner.nextInt();
            }
            System.out.println(sum);
        }
    }
}

扩展:三元运算符

除了上面的运算符外,有的时候为了简化if-else这种操作,我们会使用到三元运算符。

先来看普通的if-else结构

int a = 10;
int b = 20;
int c;
if (a > b) {
  c = a;
} else {
  c = b;
}

代码所表达的含义是,比较 a 和 b的值,如果 a 的值较大,则将 变量a 的值赋值为 c, 否则将 变量 b 的值赋值为 c

而三元运算符的结构如下:

{expression} ? if-true-element : if-false-statement;

它会先求expression的值,如果为 true ,则取值 if-true-statement,否则取值 if-false-statement

还以上面的例子作为参考

c = a > b ? a : b;

a > bexpresssion表达式, 如果这个表达式的判定结果是 true 的话,则取得?后面第一个值,即 a 的值,如果判断结果为 false 的话,则取得 后面的值,即 b 的值。

总结

本节课我们用了累加的例子学习了算术运算符和赋值运算符,这些基础运算在以后的编程练习中将无处不在,大家一定要多加练习。

Java代码实现:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            // 读取输入的整数n
            int n = sc.nextInt();
            int sum = 0;
            if (n == 0) {
                break;
            }
            // 使用for循环累加n个整数
            for (int i = 0; i < n; i++) {
                // 读取输入的整数,并累加到sum中
                sum += sc.nextInt();
            }
            // 输出累加结果
            System.out.println(sum);
        }
    }
}

你可能感兴趣的:(java基础学习,蓝桥杯,职场和发展)