读取输入的替代方法我正在研究UVa Online Judge问题集归档文件作为练习Java的一种方式,以及作为练习数据结构和算法的一般方法。从Java的System.in
他们给了一个示例输入文件提交给在线裁判使用作为一个起点(这是问题100的解决方案)。
来自标准输入流(java.lang.System.in)的输入是本站点上任何解决方案的一部分,但我无法理解他们在他们的示例解决方案中给出的从System.in中读取的实现。确实,输入文件可以包含任何整数,字符串等变体,但是每个解决方案程序都需要从System.in中逐行读取基本的文本行。必须有一个更好的(更简单和更强大的)收集的数据来自超过这个在Java中标准输入流方法:
public static String readLn(int maxLg) {
byte lin[] = new byte[maxLg];
int lg = 0, car = -1;
String line = “”;
try {
while (lg < maxLg) {
car = System.in.read();
if ((car < 0) || (car == ‘\n’)) {
break;
}
lin[lg++] += car;
}
} catch (java.io.IOException e) {
return (null);
}
if ((car < 0) && (lg == 0)) {
return (null); // eof
}
return (new String(lin, 0, lg));
}
我真的感到意外。它看起来像是直接从K & R的“C编程语言”(一本很棒的书,不管),减去访问级修改器和异常处理等等。尽管我理解实现,但它看起来好像是由C程序员并绕过Java的大部分面向对象的本质。没有更好的方法来做到这一点,使用StringTokenizer类或可能使用String或java.util.regex包的拆分方法?
我看着代码并哭泣 – Yacoby 2010-06-05 23:49:11
您使用MS Word作为IDE? *指向那些不会编译的卷曲引号。* – BalusC 2010-06-06 00:13:06
Ha。是的,我通常在发布之前用Word写东西来拼写检查等,只是习惯。好点,但我会记得下一次。愚蠢的卷曲报价。 – dvanaria 2010-06-06 00:27:16