讀取輸入的替代方法我正在研究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