最短的java代码[关闭]

Posted

技术标签:

【中文标题】最短的java代码[关闭]【英文标题】:The shortest java code [closed] 【发布时间】:2012-08-18 11:20:30 【问题描述】:
import java.util.*;
public class SoSanh 
public static void main(String[] args) 
    Scanner input = new Scanner(System.in);
    int a = input.nextInt();
    int b = input.nextInt();
    if( a > b ) System.out.print("1");
    else if ( a < b ) System.out.print("-1");
    else System.out.print(0);               


我怎样才能使它尽可能小。它必须像 1-2 行代码(不包括导入、公共类和 main 方法)

这不是家庭作业,我通过互联网上的书籍和作业学习 Java。我只是想知道它是否可以变得更短。这不是关于速度,你们误会了。

对不起,我的英语很差。

p/s : 现在我不能问任何问题 :( 我只面临 1 个问题。

【问题讨论】:

为什么它是1-2行? 代码的短小与速度没有任何关系。没有办法让这段代码更快。 为什么 5 行太长了?行数对于代码的速度并不重要。使用的算法是。 @Thomas 不,我认为任何理智的老师都不会分发如此变态的作业。不过,这属于愚蠢的求职面试问题。 不,这不是作业,没有人教我Java,我很年轻,我通过阅读书籍和很多书籍来学习Java。我问这个,所以我可以找到一个短代码。我知道代码的简短与速度无关。 【参考方案1】:

几乎正确:

System.out.println((int)Math.signum(input.nextInt() - input.nextInt());

几乎”由于可能的整数过低。此外,您的较长代码实际上可能更快(signum() 浮点数操作),更不用说更具可读性了。

【讨论】:

我只是想让代码更短一点,和速度没有关系。【参考方案2】:

您可以使用IntegerComparable 的事实:

Scanner input = new Scanner(System.in);
System.out.println(((Integer)input.nextInt()).compareTo(input.nextInt()));          

【讨论】:

这是link to this code on ideone。【参考方案3】:

这是没有整数溢出问题的 Tomasz 代码版本:

System.out.println((int)Math.signum((double) input.nextInt() - (double) input.nextInt());

但是是的,这太可怕了。

关注可读性,而不是“尽可能短的行数”。

【讨论】:

【参考方案4】:
public static void main(String[] args) 
    Scanner input = new Scanner(System.in);
    System.out.println(Math.signum(input.nextInt() - input.nextInt()));

【讨论】:

【参考方案5】:

2 行有效:

Scanner input = new Scanner(System.in);
System.out.println(new Integer(input.nextInt()).compareTo(new Integer(input.nextInt())));

【讨论】:

以上是关于最短的java代码[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

导致堆栈溢出的最短代码是啥? [关闭]

如何从ArrayList(Java)打印最短的字符串

如何在java中编写更短的双数? [关闭]

华为OD机试真题Java实现流水线真题+解题思路+代码(2022&2023)

在java中初始化字符串列表的最短方法是啥?

世界上最短的时钟代码!更短的,有木有?