Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 - Fatal编程技术网

Java 为什么我不能在这里返回多个值?

Java 为什么我不能在这里返回多个值?,java,Java,基本上,代码显示了Alicepoints和BobPoints之间的区别。但是当我返回它们时,它只是不运行 但是当我运行代码时,会显示这个错误 "Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:907) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.next

基本上,代码显示了Alicepoints和BobPoints之间的区别。但是当我返回它们时,它只是不运行

但是当我运行代码时,会显示这个错误

"Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Solution.solve(Solution.java:12)
at Solution.main(Solution.java:33)"
这是意外的。代码如下所示

    import java.io.*;
    import java.util.*;
    import java.text.*;
    import java.math.*;
    import java.util.regex.*;
    import java.math.*;
    import java.util.regex.*;

    public class Solution {

    static int[] solve(){
    // Complete this function
    Scanner in = new Scanner(System.in);
    int a0 = in.nextInt();
    int a1 = in.nextInt();
    int a2 = in.nextInt();
    int b0 = in.nextInt();
    int b1 = in.nextInt();
    int b2 = in.nextInt();
    int pointsAlice,pointsBob;
    pointsAlice = ((a0>b0)?1:0)+ ((a1>b1)?1:0)+ ((a2>b2)?1:0) ;
    pointsBob = ((a0<b0)?1:0)+ ((a1<b1)?1:0)+ ((a2<b2)?1:0) ;
    int ar[] = new int[2];
    ar[0]=pointsAlice;
    ar[1]=pointsBob;
    return ar;

}

public static void main(String[] args) {


    Solution m=new Solution();
    int rr[] = new int[2];
      rr = m.solve();


    System.out.println(rr[0] +" " + rr[1]);  




    }
}
import java.io.*;
导入java.util.*;
导入java.text.*;
导入java.math.*;
导入java.util.regex.*;
导入java.math.*;
导入java.util.regex.*;
公共类解决方案{
静态int[]solve(){
//完成此功能
扫描仪输入=新扫描仪(系统输入);
int a0=in.nextInt();
int a1=in.nextInt();
int a2=in.nextInt();
int b0=in.nextInt();
int b1=in.nextInt();
int b2=in.nextInt();
int pointsAlice,pointsBob;
pointsAlice=((a0>b0)→1:0)+(a1>b1)→1:0)+(a2>b2)→1:0);

pointsBob=((a0代码运行良好,但是有几点

  • 您实际上不需要创建
    Solution
    的对象来调用
    solve()
    方法。您可以按如下所示执行,因为它是
    静态的

  • 您不需要创建新的
    int[]
    来存储
    solve();

    int rr[]=Solution.solve();//注意我没有创建新数组。


问题与返回值无关。问题在于您试图读取的输入不是程序可以处理的形式


如果您使用以6个整数开头并在它们之间留有空格的输入来运行所编写的代码,那么它将正常工作。如果您给它其他值,其中一个
nextInt
调用将抛出
inputmaschException
(如果令牌不是整数)或
noTouchElementException
(如果您到达流的末尾)。然后它将崩溃,因为您没有处理这些异常。

错误消息很好地解释了问题…它对我来说很好!对于我来说,与@YCF_l一样,您使用的是什么作为输入?谢谢,无论如何,我使用Tahseem在上述注释中提供的提示解决了它,该提示与您的类似