gpt4 book ai didi

Java读取多行后打印多行

转载 作者:行者123 更新时间:2023-12-02 11:55:19 25 4
gpt4 key购买 nike

(这是我的家庭作业。所以我不能对任务进行任何更改,例如更改输入规则。)

我需要计算

a^m mod n 

并打印出结果。 (我已经弄清楚如何编写计算代码。)

但是问题说会有多行输入:

IN:

12 5 47
2 4 89
29 5 54

并且需要在读取所有输入行后将所有结果一起打印。 (一行输入后无法立即打印结果。)

OUT:

14
16
5

到目前为止我尝试过的代码:

import java.util.Scanner;

public class mod {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int count = 0;
while (input.hasNextLine()){
count++;
}
int[] array = new int[count];
for (int i = 0; i < count; i ++){
int a = input.nextInt();
int m = input.nextInt();
int n = input.nextInt();
int result = (int)((Math.pow(a, m)) % n);
array[i] = result;
}
for (int x : array){
System.out.println(x);
}
}
}

我尝试计算输入的行数并构建一个该大小的数组来存储结果。

但我的代码似乎无法检测到输入的结束并继续循环。

最佳答案

您可以使用 List<String> 将用户的输入存储在初始循环中。 ,我建议在空 String 上终止循环并且仅添加与由空格字符分隔的三个数字匹配的行。另外,我会在第二个循环中打印结果。那么你不需要结果array 。我也更喜欢格式化的io(即 System.out.printf )。就像,

Scanner input = new Scanner(System.in);
List<String> lines = new ArrayList<>();
while (input.hasNextLine()) {
String line = input.nextLine();
if (line.isEmpty()) {
break;
} else if (line.matches("\\d+\\s+\\d+\\s+\\d+")) {
lines.add(line);
}
}
int count = lines.size();
for (int i = 0; i < count; i++) {
String[] tokens = lines.get(i).split("\\s+");
int a = Integer.parseInt(tokens[0]), m = Integer.parseInt(tokens[1]),
n = Integer.parseInt(tokens[2]);
int result = (int) ((Math.pow(a, m)) % n);
System.out.printf("(%d ^ %d) %% %d = %d%n", a, m, n, result);
}

我使用您提供的输入进行了测试,

12 5 47
2 4 89
29 5 54

(12 ^ 5) % 47 = 14
(2 ^ 4) % 89 = 16
(29 ^ 5) % 54 = 5

关于Java读取多行后打印多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47645596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com