从键盘上输入n组整数,找出每组中最大的素数。第一行输入一个整数n,表示后面将输入n行整数,每行的整数为若干。要求使用BufferedReader和BufferedWriter
时间: 2023-08-31 12:19:32 浏览: 75
从键盘输入条整型数据,请找出-c语言课件(大学教程)
### 回答1:
以下是使用BufferedReader和BufferedWriter实现的Java代码:
```java
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(reader.readLine());
for (int i = 0; i < n; i++) {
String[] nums = reader.readLine().split(" ");
int maxPrime = -1;
for (String numStr : nums) {
int num = Integer.parseInt(numStr);
if (isPrime(num) && num > maxPrime) {
maxPrime = num;
}
}
writer.write(maxPrime + "\n");
}
writer.flush();
}
private static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
```
代码首先通过BufferedReader读入n,表示有n组数据需要处理。然后通过循环,依次读入每一组数据,并对每组数据进行处理。每一组数据都是一个字符串,需要通过split方法将其分割为多个整数。接下来,通过循环遍历每个整数,判断其是否为素数,并且是否比当前已经找到的最大素数还要大。如果是,则更新最大素数的值。最后将最大素数写入BufferedWriter中,并在每行末尾加上换行符。最后别忘了调用flush方法将缓冲区的内容写入输出流中。
### 回答2:
使用BufferedReader和BufferedWriter可以实现从键盘输入n组整数,并找出每组中最大的素数。
首先,我们需要导入相应的包,以便使用BufferedReader和BufferedWriter。代码如下:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
```
然后,我们需要在主函数中获取用户输入的n,并创建BufferedReader和BufferedWriter。代码如下:
```java
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
// 读取一行整数
String line = br.readLine();
// 拆分整数
String[] numbers = line.split(" ");
// 定义最大素数
int maxPrime = 0;
// 遍历每个整数
for (String number : numbers) {
int num = Integer.parseInt(number);
// 判断是否为素数
if (isPrime(num) && num > maxPrime) {
maxPrime = num;
}
}
// 输出最大素数
bw.write(maxPrime + "\n");
}
bw.flush();
bw.close();
br.close();
}
```
最后,我们需要实现一个辅助函数isPrime,用于判断一个整数是否为素数。代码如下:
```java
private static boolean isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
```
以上就是使用BufferedReader和BufferedWriter实现从键盘输入n组整数,并找出每组中最大素数的代码。
### 回答3:
题目要求从键盘上输入n组整数,并找出每组中最大的素数。我们可以使用BufferedReader来接收键盘输入的数据,并使用BufferedWriter来输出结果。
首先,我们需要导入java.io包中的BufferedReader和BufferedWriter类。然后,创建一个BufferedReader对象br来接收键盘输入。接下来,使用br的readLine()方法读取第一行输入的整数n,并将其转换为int类型。
然后,我们使用一个for循环来读取接下来的n行整数,并将其保存在一个二维数组中。在每一行读取整数时,我们可以先将输入的整数保存为一个字符串,然后使用split()方法将字符串按空格划分为一个整数数组。将划分后的整数数组保存到二维数组中。
接下来,我们创建一个函数isPrime()来判断一个数是否为素数。isPrime()函数接收一个整数参数n,通过遍历2到n-1之间的数来判断n是否能被其中的任何数整除。若有能整除n的数,则n不是素数,返回false;否则,n为素数,返回true。
在每一行读取整数并保存到二维数组之后,进行一次遍历判断数组中每个整数是否为素数,将最大的素数保存在一个int类型的变量max中。
最后,我们创建一个BufferedWriter对象bw,使用bw的write()方法将max输出到控制台。
完整代码如下:
```java
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 读取n
int n = Integer.parseInt(br.readLine());
// 创建二维数组保存数据
int[][] nums = new int[n][];
for (int i = 0; i < n; i++) {
String[] input = br.readLine().split(" ");
nums[i] = new int[input.length];
for (int j = 0; j < input.length; j++) {
nums[i][j] = Integer.parseInt(input[j]);
}
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 遍历数组找出最大素数
for (int i = 0; i < n; i++) {
int max = -1;
for (int num : nums[i]) {
if (isPrime(num) && num > max) {
max = num;
}
}
bw.write(max + "\n");
}
bw.flush();
}
// 判断是否为素数
public static boolean isPrime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
```
注意:每组输入的整数需要以空格分隔,且每组输入占一行。程序将根据输入的整数,输出每组中的最大素数。
阅读全文