2016-12-10 18 views
0

コード内で入力値をハードコーディングすると、次のコードが正常に動作します。しかし、キーボードから入力すると、l [i]とr [i]の値は "希望値" +48に割り当てられます。なぜこれが起こっているのか分かりません。解決策を見つけるのを手伝ってください。キーボードからの入力中に変数が不明な値を取得する

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

public class RichieRich { 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int n = in.nextInt(); 
    int k = in.nextInt(); 
    int i,j; 
    int number = in.nextInt(); 
    String numb = Integer.toString(number); 
    char[] num = numb.toCharArray(); 


    int siz = n/2; 
    int[] l = new int[siz]; 
    int[] r = new int[siz]; 

    for(i=0; i<siz; i++) 
    { 
     l[i] = num[i]; /*PROBLEM IS HERE*/ 
    } 
    for(i=0, j=n-1; i<siz; i++, j--) 
    { 
     r[i] = num[j]; /*AND HERE*/ 
    } 
    int count=0; 
    for(i=0; i<siz; i++) 
    { 
     if(l[i] != r[i]) 
     { 
      count++; 
     } 
    } 
    int cose; 
    if(k+1 == count) 
    { 

     cose = 0; 
    } 
    else if(k>=count) 
    { 
     cose = 1; 
    } 
    else 
    { 
     cose = -1; 
    } 
    switch(cose) 
    { 
     case 0: 
     { 
      int max = 0; 
      for(i=0;i<siz;i++) 
      { 
       if(l[i] > max) 
       { 
        max = l[i]; 
       } 
       if(r[i] > max) 
       { 
        max = r[i]; 
       } 
      } 
      for(i=0; i<siz; i++) 
      { 
       if(l[i] != r[i]) 
       { 
        l[i] = max; 
        r[i] = max; 
       } 
      } 
      for(i=0 ; i<siz; i++) 
      { 
       System.out.println(l[i]); 
      } 
      for(i=0 ; i<siz; i++) 
      { 
       System.out.println(r[i]); 
      } 
     } 
     case 1: 
     { 
      int max = 0; 
      for(i=0 ; i<n; i++) 
      { 
       if(num[i] > max) 
       { 
        max = num[i]; 
       } 
       if(l[i] != r[i]) 
       { 
        l[i] = max; 
        r[i] = max; 
       } 
      } 
      for(i=0 ; i<siz; i++) 
      { 
       System.out.println(l[i]); 
      } 
      for(i=0 ; i<siz; i++) 
      { 
       System.out.println(r[i]); 
      } 
     } 
     case -1: 
     { 
      System.out.println("-1"); 
     } 
    } 
} 
} 
+1

[Java:parse int value from a char]の複製があります。(http://stackoverflow.com/questions/4968323/java-parse-int-value-from-a-char) – Tom

答えて

1

あなたはcharintから変換され、文字 0の値は、48' 、したがって、相違点です。

+0

-48?どうもありがとう。私は今それを得る –

+0

はいそれは動作します。 – TDG

関連する問題