Если я использую только один класс, он работает отлично, но когда я использую несколько классов, я сталкиваюсь с проблемой, когда: когда я даю ввод целиком как пакет (копировать, вставить), он не работает (все еще ждет для некоторого дополнительного ввода и ничего не делает), но когда я даю каждый ввод вручную, он отлично работает.
Итак, эта проблема началась, когда я представил новый класс, поэтому я предполагаю, что что-то не так с классом или наследованием при использовании с классом Scanner.
Примечание: это для моего колледжа, поэтому я не могу использовать файлы здесь.
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--;
}
}
}
Мои данные
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