我可以在语句中声明变量吗?

时间:2015-04-13 23:18:22

标签: java

我在学校上课,但我已经“高级”(我可以轻松地进行练习),所以我很无聊,我想把整个节目放在一行。 我可以在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”方法中它将起作用(允许导入)。

这只是朋友的挑战,我不能做,不是我的编程风格或类似的......

谢谢!

4 个答案:

答案 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));
        });