Считайте число как последовательность строк и преобразуйте первое и последнее в целое число
Я новичок в программировании, и я только начал изучать 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 ответ
Решение
Код сканера может быть улучшен, и действительно есть проблема с вашим преобразованием. Ваш код получает значение 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(), но есть много способов конвертировать строку или символ в целое число.