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

Java 我可以在语句中声明变量吗?,java,Java,我在学校上编程课,但我已经“高级”(我可以很容易地做练习),所以我很无聊,我想在一行中完成完整的程序。 我可以在2行中完成(1行只是一个声明)。 所以我在想,如果我能在一行中做到这一点。有人有想法吗 代码如下: int i; JOptionPane.showMessageDialog(null, ((i = (Integer.parseInt(JOptionPane.showInputDialog("Type in your result")))) >= 6) ? "Approved" :

我在学校上编程课,但我已经“高级”(我可以很容易地做练习),所以我很无聊,我想在一行中完成完整的程序。 我可以在2行中完成(1行只是一个声明)。 所以我在想,如果我能在一行中做到这一点。有人有想法吗

代码如下:

int i;
JOptionPane.showMessageDialog(null, ((i = (Integer.parseInt(JOptionPane.showInputDialog("Type in your result")))) >= 6) ? "Approved" : ((i < 4) ? "Final test" : "Reproved"));
inti;
JOptionPane.showMessageDialog(null,((i=(Integer.parseInt(JOptionPane.showInputDialog(“输入结果”))))>=6)?“批准”:(i<4)?“最终测试”:“重新批准”);
P>我使用java,但是如果你在C或C++中有答案,它也会工作的!p> PS 2。我不想创建一个方法、类或任何类似的东西,我想要一行代码,如果在“main”方法中,它就可以工作(允许导入)

这只是我朋友的一个挑战,我做不到,不是我的编程风格或诸如此类的东西


谢谢

您可以在一条语句中声明变量:

int i;
就这样。假设你不是指复合语句,你所要求的是不可能的


虽然从技术上讲,您可以在表达式中定义变量,但不应该这样做;这是一种糟糕的编程风格,使您的代码无法阅读。

唯一可以做到这一点的方法,但非常难看,就是使用switch语句,这是唯一可以捕获解析的语句,然后您可以为您的值设置多个case(使用空的fall-through)

给你-一些带有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));
IntStream.of(Integer.parseInt(JOptionPane.showInputDialog(“输入结果”))
.mapToObj(i->i>=6?“已批准”:(i<4?“最终测试”:“已批准”))
.forEach->JOptionPane.showMessageDialog(null,s));

下面是一些从@assylias的答案中无耻地剽窃的Java 8垃圾代码

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));
        });
Collections.singleton(Integer.parseInt(JOptionPane.showInputDialog(“键入结果”))
.forEach(i->{
集合。单例(i>=6?“批准”:(i<4?“最终测试”:“重新批准”))
.forEach->JOptionPane.showMessageDialog(null,s));
});

我说可能是C/C++……你误解了“高级”的含义。。。特别是,这并不意味着能够编写没有人会理解的最晦涩的代码(这一目标实际上相当容易实现)…对不起,我想说的是,我可以轻松地完成所有练习,我想要一个挑战(一位朋友提出的)…在C/C++中,可以使用逗号运算符,如
f(),g(),h(),…
要计算所有表达式,请放弃所有结果,然后将语句的最终结果设置为最后一个表达式的结果。通过这种方式,您基本上可以评估一整套函数。但是,您不能将其与变量声明相结合。但我对Java不太清楚。这是一种糟糕的编码风格,即使对Java来说也是如此。是的,我知道这是一种非常糟糕的编程风格!这只是我朋友向我提出的一个挑战,我不能这么做。有很多语句可以包含声明:条件语句、循环语句、复合语句。@KerrekSB,声明语句?:p@KerrekSB我假设当他使用术语陈述时,他并不是指任何一个。事实上,这是一个表达:lambdaI知道,但你不会这么做,你会做case:0 case:1:case 2:up to to6@KeithNicholas如果我只输入-666呢?这是一个带符号的整数。你能用一个代码示例告诉我“切换捕获解析”是什么意思吗?Zan,Math.min和Math.max约束thevalue@pbabcdefp
switch(Integer.parseInt(JOptionPane.showInputDialog(“输入结果”)){case 0:case 1:case 2:case 3:JOptionPane.showMessageDialog(null,“最终测试”);中断;案例4:案例5:JOptionPane.showMessageDialog(null,“最终测试”);中断;默认值:JOptionPane.showMessageDialog(null,“已批准”);}
我现在还不能编译Java,但像驱魔术、全能精神免疫、全能精神、耶稣基督菲利·伊胡斯、多米尼和犹太诺斯特里、圣洁精神等等……这绝对是太棒了,完全是垃圾!+1.谢谢!我还没有安装Java 8,所以我无法测试,但我会下载并测试!