变量从键盘输入时获取未知值

时间:2016-12-10 15:44:41

标签: java arrays

当我在代码中对输入值进行硬编码时,以下代码可以正常工作。但是当我通过键盘输入时,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 个答案:

答案 0 :(得分:1)

您正在从int转换为char字符 0的值为48&#39}因此存在差异。