コード内で入力値をハードコーディングすると、次のコードが正常に動作します。しかし、キーボードから入力すると、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");
}
}
}
}
[Java:parse int value from a char]の複製があります。(http://stackoverflow.com/questions/4968323/java-parse-int-value-from-a-char) – Tom