лишние пробелы перед печатным текстом Java

1

Я пытаюсь написать программу для изменения букв/слов в введенной строке, я думал, что, наконец, ее получил, но я не могу понять, почему перед моим выходным текстом так много лишних пробелов. Любая помощь будет принята с благодарностью.

Также на стороне заметки я попытался сделать область массива инкрементной переменной, но она не будет работать, однако я могу использовать добавленную переменную для позиции индекса без каких-либо проблем; почему это?

Это то, что у меня есть до сих пор, и похоже, что я делаю именно то, что я хочу, чтобы он делал минус все лишнее белое пространство перед выходом.

 Scanner in = new Scanner(System.in);
  System.out.println("please enter string");
  String strName = in.nextLine();
  int ap = 0;
  char strArray[] = new char[99];

  for(int i=0;i < strName.length();i++)
  {
   strArray[ap] = strName.charAt(i);
   ap++;
  }
 for (int e=strArray.length-1;e >= 0;e--)
 {
System.out.print(strArray[e]);
}
Теги:
reverse
spaces

1 ответ

1
Лучший ответ

Попробуй это

 Scanner in = new Scanner(System.in);
  System.out.println("please enter string");
  String strName = in.nextLine();
  int ap = 0;
  char strArray[] = new char[strName.length()];

  for(int i=0;i < strName.length();i++)
  {
   strArray[ap] = strName.charAt(i);
   ap++;
  }
 for (int e=strArray.length-1;e >= 0;e--)
 {
   System.out.print(strArray[e]);
 }

Проблема в том, что вы инициализируете этот массив символов размером до 99. Для строки размера 4... мы должны напечатать 95 нулей, затем 4 символа в обратном порядке. Это будет исправлено путем инициализации массива до фактического размера входной строки. Нет нулей для печати (печать нулей приводит к пробелу).

Also on a side note I attempted to make the scope of the array an incremented variable but it  
would not run, however I can use an incremented variable for the index position without any 
issues; why is that?

Хммм. Не уверен, что вы имеете в виду? Слово "scope" имеет специфическое значение в CS, о котором я не думаю, это то значение, о котором вы говорите!

  • 0
    Это сделало это спасибо. Я предполагаю, что все пробелы были в том, что он печатал пробел для всех индексных точек в массиве, в которых не было символов?
  • 0
    @ user3413471 Верно. Более формально - каждый индекс массива имеет нулевое значение. Когда вы устанавливаете индекс в значение, оно больше не равно нулю - это то значение. Дело в том, что всякий раз, когда вы создаете массив, он «инициализирует» все пробелы в null. Так получилось, что функция печати вместо сбоя с нулевым значением просто печатает пустой пробел. Другие функции аварийно завершают работу или выбрасывают ненавистное исключение NullPointerException - будьте осторожны с этими нулями!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню