这是一个非常奇怪且非常具体的问题。
最终,我正在尝试编写一个程序转换,该程序接受 java 源代码,并将其转换为不使用(除其他外)
- 数组
- 循环
- 用户定义的方法
- 如果语句
这是我为自己设定的挑战,因为我的老师告诉我,不使用这些东西就不可能编写程序。
我已经解决了大部分问题,包括函数内联和数组替换,但是我不知道如何管理 if 语句。
在 C++ 中,我会使用标签和 goto,也许还有 ?:,但是 Java 不支持 GOTO 语句。
我的问题是:给定一段代码,
if(CONDITION)
{
//More code in here
}
如何转换它以使其功能相同,但不使用 if 关键字。请注意,循环结构也是不可能的。
鉴于此,很容易创建 else 和 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
}