【问题标题】:How do I use a function involving integers?如何使用涉及整数的函数?
【发布时间】:2016-03-04 13:20:34
【问题描述】:

我们在课堂上有一个作业,要使用函数创建一个最大公有除法 (gcd) 程序。我错过了我们学习如何正确使用它们的课程。我完成了实际进行除法的部分,但我不知道如何将它分成一个函数并让它工作。我想在主类中有输入,在函数中有进程。

这是我有的,运行时它不起作用

package gcd.function.java.program;

import java.util.Scanner;

/**
*
* @author sarah_000
*/
public class GCDFunctionJavaProgram {

public static void main(String[] args) {

     int num1;
     int num2;
     int div;
    Scanner input = new Scanner(System.in);

    System.out.print("Enter your first number: ");
    num1 = input.nextInt();
    System.out.print("Enter your second number: ");
    num2 = input.nextInt();

    System.out.printf("The GCD is %d ", div);
}

public static void GCDFunction() {

    if(num1 > num2)
       div = num2;

   else div = num1;

   while((num1 % div!= 0)||(num2 % div != 0))
   {
   div --;
   }//end of while loop

   }    
}

您可以给我的任何提示或帮助将不胜感激,我是新手

【问题讨论】:

  • “它不起作用”不是一个有用的问题描述。请编辑您的问题以包括如何您的程序无法运行,包括任何错误的全文、您提供的输入、您期望的输出以及您实际得到的输出。

标签: java function methods


【解决方案1】:

您声明两个参数并在GCDFunction 中修改返回类型,如下所示:

public static int GCDFunction(int num1, int num2) 

您当前正在尝试访问 main 方法中的变量,但超出了范围。

另外,你从来没有真正打电话给你的GCDFunction

【讨论】:

    【解决方案2】:

    把它想象成数学中的传递函数。 GCDFunction() 必须将数字接收到函数中,所以我们这样做

    public static void GCDFunction(int num1, int num2)
    

    这也让 Java 知道它的类型,类型 int。并且您的 java 变量的范围在函数内部,因此您必须在您的场景中创建变量的函数中打印输出。

    因此,一旦您设置了该函数以接收变量并在处理后输出,您就可以在 main 中使用

    调用该函数
    GCDFunction(num1, num2);
    

    其中 num1 和 num2 是存储整数的变量。

    稍微重新排列后的最终结果是这样的。

    import java.util.Scanner;
    
    public class GCDFunctionJavaProgram {
    
    public static void main(String[] args) {
    
        int num1;
        int num2;
    
        Scanner input = new Scanner(System.in);
    
        System.out.print("Enter your first number: ");
        num1 = input.nextInt();
        System.out.print("Enter your second number: ");
        num2 = input.nextInt();
    
        GCDFunction(num1, num2);
    
    }
    
    public static void GCDFunction(int num1, int num2) {
        int div;
        if(num1 > num2){
           div = num2;
        }
    
       else{ div = num1;}
    
       while((num1 % div!= 0)||(num2 % div != 0))
       {
       div --;
       }//end of while loop
       System.out.printf("The GCD is %d ", div);
       }
    

    【讨论】:

    • 您是否应该至少打印生成的 gcd 编号,为什么要做所有这些而不是像操作人员想要的那样打印它?
    • 谢谢。从主目录中删除后忘记移动该语句。已更正。
    • 谢谢,您的解释让我们更清楚了!
    【解决方案3】:

    试图给你一个例子,说明代码应该如何接受可变数量的参数。

    public int gcd(Integer... numbers) {
        int gcd = 1;
        int miNNumber=Collections.min(Arrays.asList(numbers));
        boolean isDivisible;
        for(int i=2; i<=miNNumber;i++) {
            isDivisible=true;
            for(Integer eachNumber : numbers) {
                if(eachNumber%i!=0) {
                    isDivisible=false;
                    break;
                }
            }
            if(isDivisible) {
                gcd=i;
            }
        }
        return gcd;
    }
    

    你可以这样称呼它

    gcd(10, 200, 400);
    

    gcd(10, 200, 400, 4000, 40);
    

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      相关资源
      最近更新 更多