【问题标题】:excess spaces in front of printed text java打印文本java前面的多余空格
【发布时间】:2014-04-17 13:41:20
【问题描述】:

我正在尝试编写一个程序来反转输入字符串中的字母/单词,我以为我终于有了它,但我不明白为什么我的输出文本前面有这么多多余的空格。任何帮助将不胜感激。

另外,我试图使数组的范围成为递增变量,但它不会运行,但是我可以将递增变量用于索引位置,而不会出现任何问题;这是为什么呢?

这就是我目前所拥有的,它似乎完全按照我的意愿去做,减去了输出前面所有多余的空白。

 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]);
}

【问题讨论】:

  • 只需将数组声明更改为char strArray[] = new char[strName.length()];

标签: java reverse spaces


【解决方案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]);
 }

问题是您正在将该 char 数组初始化为大小 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?

嗯。不明白你的意思? “范围”这个词在CS中具有特定的含义,我认为不是您所指的含义!

【讨论】:

  • 做到了,谢谢。我猜所有的空格都是因为它为数组中没有字符的所有索引点打印了一个空格?
  • @user3413471 对。更正式地 - 数组的每个索引都有空值。当您将索引设置为一个值时,它不再为空 - 它是那个值。重点是,每当您创建一个数组时,它都会将所有空格“初始化”为空。它恰好发生了打印功能,而不是在空值上崩溃,只是打印一个空白空间。其他函数崩溃或抛出讨厌的 NullPointerException - 小心那些空值!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 2014-08-07
  • 1970-01-01
  • 2016-07-06
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多