#java
#java
Вопрос:
Это ссылка на вопрос. Я написал этот код на Java, но я не получаю правильный вывод.Почему?
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0; i<n; i )
{
String name = sc.nextLine();
String even="";
String odd ="";
for(int j=0; j<name.length(); j )
{
if(j%2==0)
even=even String.valueOf(name.charAt(j));
else
odd=odd String.valueOf(name.charAt(j));
}
System.out.println(even " " odd);
Это ошибка, которую я получаю.
Input (stdin)
2
Hacker
Rank
Your Output (stdout)
// a blank space here.
Hce akr
Expected Output
Hce akr
Rn ak
Комментарии:
1. Прочитайте эту статью для получения советов по отладке вашего кода.
Ответ №1:
Вы int n = sc.nextInt();
потребляете целое число, которое вводится (2), но все еще есть новая строка.
Когда ваш цикл выполняется в первый раз, и вы вызываете String name = sc.nextLine();
, он будет использовать оставшуюся новую строку (и ничего больше). Следовательно, ваша пустая строка.
Чтобы пройти мимо этого, обязательно прочитайте новую строку после прочтения n
Кроме того, последняя запись не отображается, потому что вам, вероятно, понадобится завершающая новая строка (одна после «Ранга» в вашем вводе)
Ответ №2:
ваш код верен, но проблема заключается в том, что вы вводите данные. если вы принимаете это как вход 2 хакерского ранга, то ваш исключенный вывод никогда не будет таким, как вы упомянули в вашем вопросе. Теперь я вкратце расскажу вам, в чем проблема:———
int n = sc.nextInt(); здесь вы вводите целое число 2, но удаляете только одну переменную строкового типа. вы должны объявить переменную 2string typr, если вы выбираете 2. в противном случае будет обработан только 1 tring .
Ранг хакера, при котором вы принимаете 2 строковые переменные bt в соответствии с кодом ur, только хакер будет скомпилирован и выдаст результат. вы объявляете 2 строковые переменные.