当前位置: 首页 > article >正文

蓝桥杯Java之输入输出练习题

题目 1:多组A+B(基础版)

题目描述:
输入多组数据,每组数据包含两个整数 A 和 B,计算它们的和。输入以 文件结尾(EOF) 结束。

输入格式:
每行包含两个整数 A 和 B(-10^9 ≤ A, B ≤ 10^9)。

输出格式:
对于每组输入,输出 A+B 的结果,每行输出一个结果。

输入示例:

1 2

3 4

5 6

输出示例:

3

7

11

解题思路:

  • 题目要求输入 多组数据,并且以 EOF(End Of File) 结束,因此不能使用固定次数的循环。
  • 使用 Scanner.hasNextInt() 或 BufferedReader.readLine() 来判断是否有新的输入。

解法 1:Scanner

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {  // 判断是否有输入
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            System.out.println(a + b);
        }
        scanner.close();
    }
}

解法 2:BufferedReader

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;



public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String line;

        while ((line = reader.readLine()) != null) { // 读取到EOF

            String[] nums = line.split(" ");

            int a = Integer.parseInt(nums[0]);

            int b = Integer.parseInt(nums[1]);

            System.out.println(a + b);

        }

    }

}

题目 2:计算圆的面积

题目描述:
输入一个半径 r,计算圆的面积,并保留两位小数

输入格式:
输入一个正整数 r(1 ≤ r ≤ 1000)。

输出格式:
输出圆的面积,结果保留两位小数

输入示例:

2

输出示例:

12.57

解题思路:

  • 计算圆的面积,公式为 π * r * r。
  • 需要使用 格式化输出,保留两位小数,使用 System.out.printf("%.2f", area);。

Java代码:

import java.util.Scanner;



public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int r = scanner.nextInt();

        double area = Math.PI * r * r;

        System.out.printf("%.2f\n", area);

    }

}

题目 3:整数除法

题目描述:
输入两个整数 A 和 B,计算 A 除以 B 的整数部分,以及余数

输入格式:
输入包含两个整数 A 和 B(-10^9 ≤ A ≤ 10^9, 1 ≤ B ≤ 1000)。

输出格式:
输出 A 除以 B 的整数部分和余数,用空格隔开。

输入示例:

10 3

输出示例:

3 1

解题思路:

  • 直接使用 A / B 求整数部分,使用 A % B 求余数。

Java代码:

import java.util.Scanner;



public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int a = scanner.nextInt();

        int b = scanner.nextInt();

        System.out.println((a / b) + " " + (a % b));

    }

}

题目 4:换行输入的 A+B

题目描述:
输入两行,每行一个整数 A 和 B,计算 A+B。

输入格式:
第一行输入整数 A(-10^9 ≤ A ≤ 10^9),第二行输入整数 B。

输出格式:
输出 A+B 的结果。

输入示例:

5

6

输出示例:

11

解题思路:

  • 需要读取 两行 输入,并计算它们的和。

Java代码:

import java.util.Scanner;



public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int a = Integer.parseInt(scanner.nextLine());

        int b = Integer.parseInt(scanner.nextLine());

        System.out.println(a + b);

    }

}

题目 5:浮点数的四舍五入

题目描述:
输入一个浮点数 x(0 ≤ x ≤ 10000),对其进行四舍五入,输出整数

输入格式:
输入一个浮点数 x。

输出格式:
输出 x 四舍五入后的整数。

输入示例:

3.6

输出示例:

4

解题思路:

  • 直接使用 Math.round(x) 进行四舍五入。

Java代码:

import java.util.Scanner;



public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        double x = scanner.nextDouble();

        System.out.println(Math.round(x));

    }

}

题目6:大数求和(int溢出问题)

题目描述:

输入两个整数A和B(取值范围为-1e18到1e18),输出A+B的值。

输入示例:

1000000000000000000 2000000000000000000  

输出示例:

3000000000000000000  

参考代码:

import java.io.*;

import java.math.BigInteger;



public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] input = br.readLine().split(" ");

        BigInteger a = new BigInteger(input[0]);

        BigInteger b = new BigInteger(input[1]);

        System.out.println(a.add(b));

    }

}

解析:

数据类型选择:int和long均无法存储1e18范围的值,必须使用BigInteger。

易错点:

直接使用long仍可能溢出(如Long.MAX_VALUE = 9e18,但题目输入可能超过此范围)。

未处理负数输入。

题目3:保留三位小数的浮点运算

题目描述:

输入一个浮点数r,表示球的半径,计算球体积并保留三位小数(公式:v=3/4tr3)

输入示例:

3.0  

输出示例:

113.097  

参考代码:

import java.util.Scanner;



public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        double r = sc.nextDouble();

        double volume = 4.0 / 3 * Math.PI * Math.pow(r, 3);

        System.out.printf("%.3f", volume); // 自动四舍五入

    }

}

解析:

浮点运算陷阱:

4 / 3在Java中结果为1(整数除法),需写为4.0 / 3。

格式化输出:printf中的%.3f会自动四舍五入到第三位小数。

题目4:混合输入处理

题目描述:

第一行输入一个整数n,表示后续有n组数据。每组数据包含一个字符串和一个整数,格式为[字符串] [整数]。输出所有整数之和。

输入示例:

3  

Apple 5  

Banana 10  

Orange 15  

输出示例:

30  

参考代码:

import java.io.*;



public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

        int sum = 0;

        for (int i = 0; i < n; i++) {

            String[] parts = br.readLine().split(" ");

            sum += Integer.parseInt(parts[1]); // 取第二个元素

        }

        System.out.println(sum);

    }

}

解析:

输入顺序处理:每组数据的第二个元素是整数,需通过索引parts[1]提取。

易错点:

字符串可能包含空格(如Hello World 20,此时parts[1]可能不是整数)。

未处理非数字字符(如输入为Apple Five)。

题目5:边界条件测试(极大值)

题目描述:

输入两个整数A和B(取值范围为0到1e18),输出A*B的值。

输入示例:

1000000000 3000000000  

输出示例:

3000000000000000000  

参考代码:

import java.io.*;



public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] input = br.readLine().split(" ");

        long a = Long.parseLong(input[0]);

        long b = Long.parseLong(input[1]);

        System.out.println(a * b);

    }

}

解析:

溢出问题:

1e9 * 3e9 = 3e18,在long范围内(Long.MAX_VALUE = 9e18)。

若结果超过9e18,需改用BigInteger。


http://www.kler.cn/a/536617.html

相关文章:

  • 接入 deepseek 实现AI智能问诊
  • 当今前沿技术:改变未来的核心力量
  • el-table中的某个字段最多显示两行,超出部分显示“...详情”,怎么办
  • 结构体排序 C++ 蓝桥杯
  • 【数据结构-Trie树】力扣720. 词典中最长的单词
  • [高等数学]曲率
  • 深入了解回调函数(Callback Function)
  • 如何解决 java.util.prefs.InvalidPreferencesFormatException 异常问题?亲测有效的解决方法!
  • 【Flink源码分析】3. Flink1.19源码分析-精通动态代理
  • Docker Desktop安装到其他盘
  • 如何通过Davinci Configurator来新增一个BswM仲裁规则
  • 【diffusers极速入门(八)】GPU 显存节省(减少内存使用)技巧总结
  • Axure设计教程:动态排名图(中继器实现)
  • AIP-135 自定义方法
  • Big.js应用
  • Azure OpenAI 服务调用 DeepSeek 模型完全指南
  • 从 .NET Framework 升级到 .NET 8 后 SignalR 问题处理与解决方案
  • Facebook矩阵营销:多维度布局,精准打击
  • 力扣 无重复字符的最长子串
  • 已验证正常,Java输入字符串生成PDF文件
  • MySQL开窗函数种类和使用总结
  • 将仓库A分支同步到仓库B分支,并且同步commit提交
  • js中,正则表达式m修饰符说明
  • 数据完整性与约束的分类
  • 如何制定旅游计划:从零开始的旅行规划
  • 让相机自己决定拍哪儿!——NeRF 三维重建的主动探索之路