You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让下方Java代码的运算结果按两组序列分两行输出?

问题描述

我正在HackerRank平台上完成基础练习题(这是我学习Java的第3天),刚编写完成以下代码:

import java.io.*;
import java.util.*;
import java.lang.Math;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int seriesInput = scanner.nextInt();

        for (int q = 0; q < seriesInput; q++) {
            int inputA = scanner.nextInt();
            int inputB = scanner.nextInt();
            int inputN = scanner.nextInt();
            double s0 = inputA + Math.pow(2, 0) * inputB;
            int s2 = (int) s0;
            System.out.print(s2 + " ");
            for (int i = 1; i < inputN; i++) {        
                s0 += Math.pow(2, i) * inputB;
                int s1 = (int) s0;
                System.out.print(s1 + " ");
      }  System.out.println();
    } scanner.close();
  }  
}  

请问如何让这段代码的运算结果以两组序列的形式分两行输出?

解决方案

要实现两组序列分两行输出,核心是控制输出的换行时机,同时确保每组序列对应一组独立的输入参数。

修改思路

  1. 确保外层循环执行2次:把seriesInput固定设为2,或者让用户输入2,这样循环会生成两组序列,每组结束后通过System.out.println()换行。
  2. 优化计算逻辑:原代码用Math.pow()生成浮点数,容易出现精度问题,改用整数运算更可靠——因为2^i的增量是前一次的2倍,可以用变量跟踪当前增量,避免浮点数转换。

修改后的代码

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 指定生成2组序列,也可以改成让用户输入scanner.nextInt(),只要输入值为2即可
        int seriesInput = 2;

        for (int q = 0; q < seriesInput; q++) {
            int inputA = scanner.nextInt();
            int inputB = scanner.nextInt();
            int inputN = scanner.nextInt();
            
            int currentVal = inputA + inputB; // 初始项:A + 2^0*B
            System.out.print(currentVal);
            
            int increment = inputB * 2; // 下一项的增量是2^1*B
            for (int i = 1; i < inputN; i++) {
                currentVal += increment;
                System.out.print(" " + currentVal);
                increment *= 2; // 每次增量翻倍,对应2^i*B
            }
            // 每组序列输出完毕后换行
            System.out.println();
        }
        scanner.close();
    }
}

说明

  • 外层循环执行2次,每次处理一组A、B、N参数,生成完整序列后换行,自然得到两行输出。
  • 用整数运算替代Math.pow(),避免了浮点数转整数时的精度丢失,代码运行更高效稳定。
  • 使用时只需按顺序输入两组参数(比如第一组输入1 2 5,第二组输入2 3 4),程序就会输出两行对应的序列。

内容的提问来源于stack exchange,提问作者Anh Tu Pham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:40:24