我必須撰寫一個代碼來讀取它自己的源代碼,但我不允許從檔案中讀取它。
這是我們從老師那里得到的:
public class SelfPrint {
public static void main(String[] args) {
System.out.print(getMyText());
}
private static String programText [] = {
....
};
private static String getMyText() {
}
}
uj5u.com熱心網友回復:
嘗試這個。
getMyText
有三個 for 陳述句。第一個列印程式的前 5 行。第二個列印 的常數值programText
。最后一個列印程式的其余部分。所以programText
會列印兩次。
public class SelfPrint {
public static void main(String[] args) {
System.out.print(getMyText());
}
private static String[] programText = {
"public class SelfPrint {",
" public static void main(String[] args) {",
" System.out.print(getMyText());",
" }",
" private static String[] programText = {",
" };",
" private static String getMyText() {",
" char q = 34, c = 44;",
" String n = System.lineSeparator();",
" StringBuilder sb = new StringBuilder();",
" for (int i = 0; i < 5; i )",
" sb.append(programText[i]).append(n);",
" for (int i = 0; i < programText.length; i )",
" sb.append(q programText[i] q c).append(n);",
" for (int i = 5; i < programText.length; i )",
" sb.append(programText[i]).append(n);",
" return sb.toString();",
" }",
"}",
};
private static String getMyText() {
char q = 34, c = 44;
String n = System.lineSeparator();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i )
sb.append(programText[i]).append(n);
for (int i = 0; i < programText.length; i )
sb.append(q programText[i] q c).append(n);
for (int i = 5; i < programText.length; i )
sb.append(programText[i]).append(n);
return sb.toString();
}
}
測驗(在 Windows11 上)
C:\temp>javac SelfPrint.java
C:\temp>java SelfPrint > out
C:\temp>diff SelfPrint.java out
C:\temp>echo %ERRORLEVEL%
0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/516210.html
標籤:爪哇