2017-05-23 1 views
-4

Je suis en train de résoudre Uva-562 - La division des pièces solution problem.My donne l'exécution error.Error message:Erreur d'exécution UVa 562. Que puis-je faire?

Voici le message d'erreur: Exception dans le thread "principal" java.util.NoSuchElementException à java.util .Scanner.throwFor (Scanner.java:862) à java.util.Scanner.next (Scanner.java:1485) à java.util.Scanner.nextInt (Scanner.java:2117) à java.util.Scanner.nextInt (Scanner.java:2076) à Main.main (Main.java:73)

Voici mon code:

package com.example.recursion; 

import java.util.Scanner; 

public class main { 

    public static Scanner scanner; 
    public static int[] binary; 
    public static int[] set; 
    public static int m; 
    public static int total; 
    public static int dp[][]; 

    public static void initDp(){ 

     dp=new int[101][50001]; 
     for(int i=0;i<101;i++) 
      for(int j=0;j<50001;j++) 
       dp[i][j]=-1; 

    } 

    public static void readcase() { 

     m = scanner.nextInt(); 
     int i; 
     total = 0; 
     set=new int[101]; 

     for (i = 0; i < m; i++) { 

      set[i] = scanner.nextInt(); 
      total += set[i]; 
     } 
     int solution=solve(0,0); 
     print(solution); 


    } 

    public static void print(int solution){ 

     System.out.println(solution); 
    } 

    public static int solve(int i, int sum1){ 

      int left=0,right=0; 
      if(dp[i][sum1] > -1){ 
       return dp[i][sum1]; 
      } 
      if(i==m){ 
        int sum2; 
        sum2=total-sum1; 
        return Math.abs(sum1-sum2); 
      } 

      left=solve(i+1,sum1); 
      right=solve(i+1, sum1+set[i]); 


      if(left<right) 
        return dp[i][sum1]=left; 
      else 
        return dp[i][sum1]=right; 

     } 

    public static void main(String args[]) { 

     scanner = new Scanner(System.in); 
     int n, i; 
     n = scanner.nextInt(); 

     for (i = 0; i < n; i++) { 

      initDp(); 
      readcase(); 
     } 

    } 

} 
+0

Et le message d'erreur est? – Jens

+0

Voici le message d'erreur: Exception dans le thread "principal" java.util.NoSuchElementException \t à java.util.Scanner.throwFor (Scanner.java:862) \t à java.util.Scanner.next (Scanner. java: 1485) \t à java.util.Scanner.nextInt (Scanner.java:2117) \t à java.util.Scanner.nextInt (Scanner.java:2076) \t à Main.main (Main.java:73) –

Répondre

0

Je l'ai résolu.

Le problème était NoSuchElementException la ligne: n=scanner.nextInt(); je fixe à l'aide:

if(scanner.hasNextInt()) 
{ 
    n = scanner.nextInt(); 
} 

Le code a été accepté par uHunt.