【问题标题】:The shortest java code [closed]最短的java代码[关闭]
【发布时间】: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。我问这个,所以我可以找到一个短代码。我知道代码的简短与速度无关。

标签: java short


【解决方案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()));          

【讨论】:

【解决方案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())));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        • 2012-05-25
        • 2013-03-27
        相关资源
        最近更新 更多