Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用多个类同时获取所有输入时出错_Java_Java.util.scanner - Fatal编程技术网

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

Java 使用多个类同时获取所有输入时出错,java,java.util.scanner,Java,Java.util.scanner,如果我只使用一个类,它工作得很好,但是当我使用多个类时,我面临一个问题,当我批量(复制粘贴)提供整个输入时,它不工作(仍然等待更多的输入,并且什么也不做),但是当我手动提供每个输入时,它工作得很好 所以,当我引入一个新类时,这个问题就开始了,所以我猜当使用Scanner类时,类或继承有问题 请比较一下,让我知道错误 注意:这是我的大学文凭,所以我不能在这里使用文件 顺便说一句,我的输入是 五, 50 2 9-10 25 1 5.1 2 9-10 25 1 5.1 2 9-10 25 1 50 2

如果我只使用一个类,它工作得很好,但是当我使用多个类时,我面临一个问题,当我批量(复制粘贴)提供整个输入时,它不工作(仍然等待更多的输入,并且什么也不做),但是当我手动提供每个输入时,它工作得很好

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

请比较一下,让我知道错误

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

顺便说一句,我的输入是

五,

50

2 9-10 25 1

5.1

2 9-10 25 1

5.1

2 9-10 25 1

50

2 9-10 25 1

5.1

2 9-10 25 1

预期产量

540000

400万

400万

540000

400万

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--;
     }
   }
 }
import java.io.*;
导入java.lang.*;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int nooftestCases=scanner.nextInt();
而(nooftestCases>0){
int n,k;
int[]数组=新的int[20];
int sumWithOutRemove=0,sumWithRemove=0;
n=scanner.nextInt();
k=scanner.nextInt();
未移除的SUM=0;
对于(int i=0;i具有多个等级的代码(0){
objname.getDetails();
objname.displayDetails();
每箱——;
}
}
}

如果我理解正确,您的输入如下:

1 2 3 4 5 6
完成后按enter键。 如果是这种情况,则需要将输入解析为字符串并将其拆分为参数:

   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
   }

那么你是在复制粘贴用空格分隔的输入?@JimS是的,我是说你打字时按enter键了吗?复制/粘贴可能不包括newlinr。@Deadpool我现在已经给出了输入,请检查扫描仪在键入换行符时(按enter键时)是否移动到下一个输入。如果您想同时输入它们,请尝试用换行符将它们分隔开。