Считайте число как последовательность строк и преобразуйте первое и последнее в целое число - PullRequest
0 голосов
/ 12 октября 2018

Я новичок в программировании, и я только начал изучать Java.
Я хочу создать программу, которая

  • просит пользователя ввести строку, содержащую последовательность чисела затем
  • берет первое и последнее числа этой последовательности и
  • проверяет, являются ли эти числа нечетными или четными

На основании этой информации он выполнитнекоторые вещи.

Вот мой код:

public static void main(String[] args) {
    Scanner kb = new Scanner(System.in);
    String n = kb.nextLine();
    Integer x = Integer.valueOf(n.charAt(n.length() - 1));
    Integer y = Integer.valueOf(n.charAt(0));
    String out;
    if (y % 2 == 0 && x % 2 == 0) {
        out = "$" + n.substring(1, n.length() - 1) + "$";
    } else if (y % 2 > 0 && x % 2 > 0) {
        out = "X" + n.substring(1, n.length() - 1) + "X";
    } else if (x == 0); {
        out = n.substring(0, n.length() - 1) + "#";
    }
    System.out.println(out);
}

Я не уверен, в чем проблема.Я думаю, что о тех двух строках

Integer x = Integer.valueOf(n.charAt(n.length()-1));
Integer y = Integer.valueOf(n.charAt(0));

Выходное значение отличается от того, что во входе ..

1 Ответ

0 голосов
/ 12 октября 2018

Код сканера может быть улучшен, и действительно есть проблема с вашим преобразованием.Ваш код получает значение ASCII этих символов.Попробуйте это так:

public static void main (String[] args) throws java.lang.Exception
{
    Scanner console = new Scanner(System.in);

    while (console.hasNextLine()) {
        String n = console.nextLine();
        Integer x = Integer.parseInt(n.substring(n.length()-1));
        //System.out.println(x);
        Integer y = Integer.parseInt(n.substring(0, 1));
        //System.out.println(y);
        String out;
        if (y % 2 == 0 && x % 2 == 0)
        {
            out = "$"+n.substring(1, n.length()-1)+"$";
        }
        else if (y % 2 > 0 && x % 2 > 0) {
            out = "X" +n.substring(1, n.length()-1) + "X";
        }
        else if (x == 0); 
        {
        out = n.substring(0, n.length()-1)+ "#";
        }
        System.out.println(out);
    }
}

Онлайн-демонстрация

Я использовал substring () / parseInt (), но есть много способов конвертировать строка или char в целое число.

...