Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java在打印字符时陷入循环_Java - Fatal编程技术网

java在打印字符时陷入循环

java在打印字符时陷入循环,java,Java,我有一个IBM Notes Java代理。 在这个代理中,我将数据发布到一个PHP文件中。 这个PHP最终会发出类似“记录更新成功”这样的回音 现在,在我的java代理中,在我文章的末尾,我有以下内容: for (int c; (c = in.read()) >= 0;){ System.out.print((char)c); } 但在我的日志文件中,我现在看到了这个 24-01-2017 13:57:45 AMgr: Agent printing:

我有一个IBM Notes Java代理。 在这个代理中,我将数据发布到一个PHP文件中。 这个PHP最终会发出类似“记录更新成功”这样的回音

现在,在我的java代理中,在我文章的末尾,我有以下内容:

for (int c; (c = in.read()) >= 0;){
                System.out.print((char)c);
}
但在我的日志文件中,我现在看到了这个

24-01-2017 13:57:45   AMgr: Agent  printing: R
24-01-2017 13:57:45   AMgr: Agent  printing: e
24-01-2017 13:57:45   AMgr: Agent  printing: c

所以它会单独打印每个字符,这是为什么??

使用
java.util.Scanner
将回显数据作为
InputStream
,然后只使用该字符串值执行
System.out.println()
。您不需要逐个循环浏览每个角色

或者,您可以创建一个新字符串并执行
string+=字符在每次递归期间

String output = "";
for(int c = 0; (c = n.read()) >= 0;){
        output += (char)c;
}
System.out.print(output);

对于像
public int read()
这样的方法,您期望得到什么?它只返回字符,您直接在输出流中打印它。问题是什么?in从何而来?@Cruncher从外观上看,bboni使用的任何记录器系统都会将每个system.out.print转换为自己的行(并在其前面添加时间戳)。@bboni我肯定是这样的。无论如何,解决办法很简单。将结果生成字符串,并且只打印一次。很明显,您的日志记录器并不关心打印与打印,什么卡在循环中?如果您命令print(c)
,日志正确地表示“printing:
c
”,意思类似于“使用参数
c
调用了方法“print”。打印是单独调用的,因此日志记录也是单独完成的。