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

时间:2017-06-15 12:03:55

标签: 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.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]);  




    }
}

2 个答案:

答案 0 :(得分:0)

代码工作正常,但有几点。

  • 您实际上不需要创建Solution的对象来调用solve()方法。您可以按照下面的说明执行此操作,因为它是static

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

    返回的结果

    int rr[] = Solution.solve(); //note that I didn't create a new array.

答案 1 :(得分:0)

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

如果您使用以6个整数开头并且它们之间有空格的输入运行它,则所写的代码将起作用。如果你给它别的东西,其中一个nextInt调用会抛出InputMismatchException(如果一个标记不是整数)或NoSuchElementException(如果你到达结束时)流)。然后它会崩溃,因为你没有处理这些异常。