gpt4 book ai didi

java - 使用多个类同时获取所有输入时出错

转载 作者:行者123 更新时间:2023-11-30 12:08:52 24 4
gpt4 key购买 nike

如果我只使用一个类,它工作得很好,但是当我使用多个类时,我遇到了一个问题,当我将整个输入作为一个批处理(复制粘贴)时,它不起作用(仍然等待更多输入但什么都不做),但是当我手动输入每个输入时它工作完美。

所以,当我引入一个新类时,这个问题就开始了,所以我猜想在使用 Scanner 类时类或继承有问题。

请大家对比,指出错误

注意:这是我的大学实验,所以我不能在这里使用文件。

顺便说一句,我的输入是

5

5 0

2 9 -10 25 1

5 1

2 9 -10 25 1

5 1

2 9 -10 25 1

5 0

2 9 -10 25 1

5 1

2 9 -10 25 1

预期输出

5.400000

4.000000

4.000000

5.400000

4.000000

codeWithSingleClass - 工作完美

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

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

while(nooftestCases>0) {
int n,k;
int[] array = new int[20];
int sumWithOutRemoval=0 , sumWithRemoval=0;
n = scanner.nextInt();
k = scanner.nextInt();
sumWithOutRemoval = 0;
for (int i = 0; i < n; i++) {
array[i] = scanner.nextInt();
sumWithOutRemoval += array[i];
}
if (k == 0) {
double finalAns = (double) sumWithOutRemoval / n;
System.out.println(String.format("%.6f", finalAns));
} else {
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
if (array[i] < array[j]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
sumWithRemoval = 0;
for (int i = 1; i < n - 1; i++) {
sumWithRemoval += array[i];
}
double finalAns = (double) (sumWithRemoval / (n - (2 * k)));
System.out.println(String.format("%.6f", finalAns));
}
nooftestCases--;
}
}
}



--->codeWithMultipleClasses-hasIssues<----

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

class Sample {

static int n,k;
static int[] array = new int[20];
static int sumWithOutRemoval , sumWithRemoval;

public void getDetails(){
Scanner scanner2=new Scanner(System.in);
n = scanner2.nextInt();
k = scanner2.nextInt();
sumWithOutRemoval = 0;
for (int i = 0; i < n; i++) {
array[i] = scanner2.nextInt();
sumWithOutRemoval += array[i];
}
}
public void displayDetails(){
if (k == 0) {
double finalAns = (double) sumWithOutRemoval / n;
System.out.println(String.format("%.6f", finalAns));
}
else {
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
if (array[i] < array[j]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
sumWithRemoval = 0;
for (int i = 1; i < n - 1; i++) {
sumWithRemoval += array[i];
}
double finalAns = (double) (sumWithRemoval / (n - (2 * k)));
System.out.println(String.format("%.6f", finalAns));
}
}
}
public class Main extends Sample {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int nooftestCases=scanner.nextInt();
Sample objname= new Sample();
while(nooftestCases>0) {
objname.getDetails();
objname.displayDetails();
nooftestCases--;
}
}
}

最佳答案

如果我没理解错的话,你的输入是这样的:

1 2 3 4 5 6

完成后按回车键。如果是这种情况,那么您需要将输入解析为字符串并将其拆分为参数:

   public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
String input = scanner.nextLine();
String[] arguments = input.split("[ \n]");
System.out.println("First argument:"+arguments[0]);
System.out.println("Last argument:"+arguments[arguments.length - 1]);
//do something with the arguments
}

关于java - 使用多个类同时获取所有输入时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165970/

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