2017-06-15 59 views
-1

基本上,代码显示了Alicepoints和BobPoints.But之间的区别,但当我返回它只是没有运行。为什么我不能在这里返回多个值?

但是,当我运行代码显示此错误。

"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)" 

是unexpected.the代码如下所示

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]); 




    } 
} 
+0

错误信息很好地解释了这个问题... – KarelG

+1

它对我很好用! –

+1

同我一样@YCF_L –

回答

0

代码工作正常,但是几个百分点。

  • 你并不真的需要创建一个Solution对象调用的方法solve()。你可以这样做,因为它是static

  • 你并不需要创建一个新的int[]来存储solve();

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

+0

谢谢无论如何,我解决了它使用塔赫姆提供的提示在上面的评论,这是类似于你的 –

0

的问题是无关返回值返回的结果。问题在于你试图读取的输入不是程序可以处理的格式。

如果您使用以6个整数开头的输入来运行代码,它们之间会出现空白,这些代码将起作用。如果你给它别的东西,其中一个nextInt调用将抛出InputMismatchException(如果令牌不是整数)或NoSuchElementException(如果你到达流的末尾)。然后它会崩溃,因为你没有处理这些异常。

+1

好点。固定。 –

相关问题