gpt4 book ai didi

java - 执行时将源程序显示为输出?

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:10 25 4
gpt4 key购买 nike

我在采访中被问到如何在执行同一程序时将整个源程序显示为输出

  • 通常我们为此使用File-handling概念,有没有其他方法可以完成这个任务

有什么建议吗?

更新的解决方案: 当我研究某事时,我找到了解决方案,我们可以通过 Quine 来解决

  • 它执行代码并打印源程序,但我们需要将整个程序作为输入 String array..as @Basile commented below

最佳答案

这是一个运行时会显示自身的程序。秘诀是创建一个包含程序行的字符串数组,数组本身中的字符串除外。所以你有第一个循环来显示行代码在字符串数组之前。然后你有一个循环来显示数组字符串,然后你有一个循环来显示表示剩余代码行的数组字符串。

请注意,空格字符的 ASCII 值为 32,双引号的 ASCII 值为 34。下面创建“quote”和“sixSpaces”的原因是为了在显示它们时避免使用转义符字符\, 尝试显示引号时。

public class ProgramThatDisplaysItself {

public static void main(String[] args) {
char space = (char)32;
char quote = (char)34;
String emptyStr = new String();
String spaceStr = String.valueOf(space);
String sixSpaces =
emptyStr.concat(spaceStr).concat(spaceStr).concat(spaceStr)
.concat(spaceStr).concat(spaceStr).concat(spaceStr);

String linesOfCode[] = {
"package programthatdisplaysitself;",
"",
"public class ProgramThatDisplaysItself {",
"",
" public static void main(String[] args) {",
" char space = (char)32;",
" char quote = (char)34;",
" String emptyStr = new String();",
" String spaceStr = String.valueOf(space);",
" String sixSpaces = ",
" emptyStr.concat(spaceStr).concat(spaceStr).concat(spaceStr)",
" .concat(spaceStr).concat(spaceStr).concat(spaceStr);",
"",
" String linesOfCode[] = {",
// Note: here's where the String array itself is skipped
" };",
"",
" for ( int i = 0; i < 14; i++ ) {",
" System.out.println( linesOfCode[i] );",
" } // end for i",
"",
" for ( int j = 0; j < linesOfCode.length; j++ ) {",
" System.out.println( sixSpaces + quote + linesOfCode[j] + quote + ',' );",
" } // end for j",
"",
" for ( int k = 14; k < linesOfCode.length; k++ ) {",
" System.out.println( linesOfCode[k] );",
" } // end for k",
"",
" } // end main()",
"",
"} // end class ProgramThatDisplaysItself",
}; // end linesOfCode[]
//display the lines until the String array elements
for ( int i = 0; i < 14; i++ ) {
System.out.println( linesOfCode[i] );
} // end for i

//display the String array elements
for ( int j = 0; j < linesOfCode.length; j++ ) {
System.out.println( sixSpaces + quote + linesOfCode[j] + quote + ',' );
} // end for j

//display the lines after the String array elements
for ( int k = 14; k < linesOfCode.length; k++ ) {
System.out.println( linesOfCode[k] );
} // end for k

} // end main()

} // end class ProgramThatDisplaysItself

关于java - 执行时将源程序显示为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com