当前位置: 首页 > 知识库问答 >
问题:

在主方法Java中编写函数

楚知
2023-03-14

你能在main方法中写一个方法吗?例如,我发现以下代码:

public class TestMax {
    public static void main(String[] args) {
    int i = 5;
    int j = 2;
    int k = max(i, j);
    System.out.println("The maximum between is " + k);
}

 public static int max(int num1, int num2) {
    int result;
    if (num1 > num2)
       result = num1;
    else
       result = num2;

    return result; 
  }
}

max方法可以在main方法中编码吗?

共有3个答案

萧卜霸
2023-03-14

如果你想使用它,在这个场景中,让它成为静态,并把它放在类中,但在主方法之外(就像你在代码中使用的那样)。然后你可以从main()内部调用它。

傅高逸
2023-03-14

当Java8问世时,Closure/Lambda功能应该可以使它成为一个函数,这样您就可以在main方法中定义max方法。只有在特殊情况下才能定义方法。

碰巧的是,你的问题确实属于特殊情况。有一个接口(Comparable),它封装了比较相同类型的两个事物的逻辑。因此,代码可以重写如下:

public class TestMax {
  public static void main(String[] args) {
    int i = 5;
    int j = 2;
    Comparator<Integer> compare = new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            // Because Integer already implements the method Comparable,
            // This could be changed to "return o1.compareTo(o2);"
            return o1 - o2;
        }
    };
    // Note that this will autobox your ints to Integers.
    int k = compare.compare(i, j) > 0 ? i : j;
    System.out.println("The maximum between is " + k);
  }
}

这只是因为比较器接口已经存在于标准Java发行版中。通过使用库可以使代码变得更好。如果我写这段代码,我会将谷歌Guava添加到我的类路径中。然后我可以写以下内容:

public class TestMax {
  public static void main(String[] args) {
    int i = 5;
    int j = 2;
    // The 'natural' ordering means use the compareTo method that is defined on Integer.
    int k = Ordering.<Integer>natural().max(i, j);
    System.out.println("The maximum between is " + k);
  }
}

我怀疑你的问题更多的是关于Java语言的能力,而不是关于数字排序(和其他事情)的标准实践。所以这可能没用,但我想我还是分享一下以防万一。

莘绍元
2023-03-14

不,您不能在另一个方法中声明一个方法。

如果您仔细查看您提供的代码,这只是格式错误的情况,main方法在声明max方法之前就结束了。

 类似资料:
  • 问题内容: 您可以在main方法内编写方法吗?例如,我找到了以下代码: 方法max可以在main方法内编码吗? 问题答案: 当Java 8发布时,Closure / Lambda功能应该可以实现,以便您可以在main方法中定义max方法。在此之前,您只能在特殊情况下在main方法中定义一个方法。 碰巧的是,您的问题确实属于特殊情况。有一个接口(可比较),其中包含比较两个相同类型的事物的逻辑。结果,

  • 问题内容: 我是Firebase的新手。我正在使用admin sdk(java code)将数据存储在firebase数据库中。我已经成功完成了这一部分。现在我想在创建数据库条目和通知时写火基础云函数 由于我在Internet上搜索了更多内容,因此仅找到了node.js代码。 https://firebase.google.com/docs/functions/开始 是否可以使用admin SDK

  • 我正在为我的HeapSort静态方法开发一个辅助方法私有E sortRemove()。让我注意一下,这个堆是一个MaxHeapPriorityQueue,它的所有元素都有一个子元素,其值小于父元素。 我正在努力 重复调用删除,直到堆为空。 但是,当一个元素被“删除”时,它被移动到数组的末尾,而不是完全从数组中逐出。 当你完成时,瞧!数组已排序。 我试图弄清楚如何让这个算法适合我的代码。 因此我有:

  • 问题内容: 是否可以像用C ++一样用Java 编写 虚拟 方法? 或者,是否存在可以实现类似行为的适当Java方法?我可以举一些例子吗? 问题答案: 来自维基百科 在 Java中 ,默认情况下,所有非静态方法都是“ 虚拟函数”。 只有标记为 final的 方法(不能被覆盖)以及 私有方法 (未被继承)都是 非虚拟的 。

  • 在本节将给出一个示例来演示EL自定义函数的开发过程。这个示例非常简单,它的功能是判断一个字符串是否匹配指定的正则表达式。EL自定义函数所对应的静态Java方法的实现代码如下: package chapter7; public class CustomFun { public static boolean matches(String regex, String s) {

  • 问题内容: 我想在Swift中编写一个方法。在这里,我在Objective-C中初始化一个类: 如何在Swift中编写此方法? 问题答案: 我想这可能是您上课的良好基础 我想避免将键复制粘贴到项目中,因此我将可能的键放入这样的示例中: 并且您可以像这样改进您的方法,并且将来您可以避免代码中任何可能的键错误: 注意:那只是如何做的一个原始想法,根本不需要使用便捷的初始化程序,但是对于我对您的最终课程