这是一个简单的 Java 代码,它不使用任何 String API 函数来反转 String,但是在最后一行,当它打印反转的字符串时,输出语句 (System.out.println()) 中存在一些问题
代码如下:
class StringReverse
{
public static void main(String[] args) throws java.io.IOException
{
int str[] = new int[100];
int i=0,j;
System.out.println("Enter a string");
while(true)
{
str[i]=System.in.read();
if(str[i++]==13)
break;
}
String reversed="",simple = new String(str,0,i-1);
System.out.println(simple);
// now reversing the string
for(j=i-1;j>=0;j--)
reversed+=((char)str[j]);
System.out.println("String is "+reversed);
}
}
示例输出是
最佳答案
这是因为您在 Windows 上运行。当您按下 Enter 时,会传输两个特殊字符 - <CR>
, 或 \r
, 和 <LF>
, 或 \n
*。你正在诱捕 \n
, 并停止阅读。然而,\r
保留在缓冲区中,并成为反转字符串的第一个字符。这就是为什么反转的字符串打印在你的 "String is "
之上的原因。输出。
这是最后发生的事情,一步一步:
-
"String is "
打印出来;光标位于十号位置(从零开始) - 反转字符串的第一个字符
"gagan\r"
被打印出来。字符不可见,但光标位置变为零;光标停留在同一行 - 反转字符串
"nagag"
在"Strin"
上打印"String is "
的一部分 - 现在您看到了输出
"nagagg is"
* <CR>
代表“回车”; <LF>
代表“换行”。
关于java - 一个简单的java代码中的一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20975916/