Jam*_*mes 5 java esoteric-languages
这是一个非常奇怪且非常具体的问题.
最终我正在尝试编写一个程序转换,它接受java源代码,并将其转换为不使用它(除其他外)
这是我为自己设定的挑战,在我的老师告诉我没有使用这些东西后编写程序是不可能的.
我已经解决了大部分问题,包括函数内联和数组替换,但是我无法弄清楚如何管理if语句.
在C++中,我使用标签和gotos,也许?:,但Java不支持GOTO语句.
我的问题是:给出一段代码,
if(CONDITION)
{
//More code in here
}
Run Code Online (Sandbox Code Playgroud)
如何对其进行转换以使其在功能上相同,但不使用if关键字.请注意,循环结构也是不可能的.
鉴于此,创建else以及if语句会很容易.但是我也不确定如何使用它创建循环,因为没有GOTO语句和方法是不可能的.
编辑:请注意,也不允许切换,也不允许递归(由于无法定义用户方法,并且递归的主函数不适用于每个程序)而排除.?:运算符不适用于所有情况.AFAIK你不能用?:调用void函数,因为它想要将一个值作为其操作的一部分.
这些条件来自IB计算机科学SL需要课程,我正在考虑HL和作为一个班级,我们嘲笑SL的"掌握"因素,其中包括'if'语句(如果其中3/15是'用户定义'具有参数和返回类型的方法)挑战实际上是在SL中进行精通测试,同时仍然生成正常运行的程序.
答案:(由bdares提供)
String result = (CONDITION)?"0":"A";
try{
Integer.parseInt(result);
//Condition is true
} catch(NumberFormatException e){
//Condition is false
}
Run Code Online (Sandbox Code Playgroud)
小智 2
if(A) {
X();
}
else{
Y();
}
Run Code Online (Sandbox Code Playgroud)
可以转换为:
A?X():Y();
Run Code Online (Sandbox Code Playgroud)
您可以将它们嵌套在您想要的所有内容中,或者简单地删除一侧:并获得一个简单的if. 条件很简单。
如果您希望它适用于 void 方法,可以使用以下方法:
String result = A?"0":"A";
try{
Integer.parseInt(result);
X();
} catch(NumberFormatException e){
Y();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |