我在学校上课,但我已经“高级”(我可以轻松地进行练习),所以我很无聊,我想把整个节目放在一行。 我可以在2中做到这一点(只有1行宣言)。 所以我在想,如果我能以某种方式在一条线上做到这一点。任何人都有意识形态?
以下是代码:
int i;
JOptionPane.showMessageDialog(null, ((i = (Integer.parseInt(JOptionPane.showInputDialog("Type in your result")))) >= 6) ? "Approved" : ((i < 4) ? "Final test" : "Reproved"));
PS。我正在使用java,但如果你有C或C ++的答案,它也会起作用!
PS 2.我不想创建方法,类或类似的东西,我想要一行代码,如果在“main”方法中它将起作用(允许导入)。
这只是朋友的挑战,我不能做,不是我的编程风格或类似的......
谢谢!
答案 0 :(得分:6)
这里你去了 - 一些带有Java 8语法的垃圾代码可能会做你想要的:
IntStream.of(Integer.parseInt(JOptionPane.showInputDialog("Type in your result")))
.mapToObj(i -> i >= 6 ? "Approved" : (i < 4 ? "Final test" : "Reproved"))
.forEach(s -> JOptionPane.showMessageDialog(null, s));
答案 1 :(得分:2)
你能做到这一点的唯一方法,但是超级丑陋,是使用switch语句,这是唯一能捕获解析的语句,然后你可以为你的值设置多个案例(空的掉落)
答案 2 :(得分:0)
您可以在一个语句中声明变量:
int i;
那就是它。假设您没有提及复合陈述,那么您所要求的是不可能的。
虽然技术上可以定义表达式中的变量,但你不应该这样做;它糟糕的编程风格,使你的代码难以理解。
答案 3 :(得分:0)
这里有一些垃圾Java 8代码无法从@ assylias的答案中删除。
Collections.singleton(Integer.parseInt(JOptionPane.showInputDialog("Type in your result")))
.forEach(i -> {
Collections.singleton(i >= 6 ? "Approved" : (i < 4 ? "Final test" : "Reproved"))
.forEach(s -> JOptionPane.showMessageDialog(null, s));
});