Java:在方法 main 中调用方法

Posted

技术标签:

【中文标题】Java:在方法 main 中调用方法【英文标题】:Java: calling a method in method main 【发布时间】:2012-09-28 07:17:07 【问题描述】:

仅供参考:我是初学者。另外,我知道调用方法是一个新手概念,并且已经有一些这样的线程。我的情况有点不同,因为我非常受伪代码的限制,我的程序必须相同地镜像。我无法从其他方法调用方法,包括从 main 内部调用方法。这是伪代码,后面是我写的代码:

伪代码:

// The user enters an integer and the program calculates that many primes
// It uses 3 methods, including the main. All the methods are in the same class
// and should be declared as ‘public static.’

Project Print the First n Primes
    Package printTheFirstNPrimesPackage
        Class PrintTheFirstNPrimes
            Method Main
                Declare numberOfPrimes as integer
Print “How many prime numbers do you want?"
                Read numberOfPrimes from the keyboard
                Call the method: PrintNPrimes(numberOfPrimes)
            end Method (Main)

//          ***********************************************************
//           This method accepts an integer and prints that many prime
//            numbers, starting at 2. 2 is the lowest primt number. 
//          ***********************************************************
            Method void PrintNPrimes(int n)
                declare i as integer
                declare myNum as integer
                myNum = 2   // The first prime number
                i = 0
                loop while i < n    // This could be a ‘for’ loop
                if IsPrime(myNum)   // Call the Isprime method, (see below)
                    i = i + 1
                    print myNum
                End If
                myNum = myNum + 1
                end loop
            end Method PrintNPrimes
//          **********************************************************
//          This method accepts an integer and tests to see if it is 
//            a prime number. If it is prime, the method returns true,
//             otherwise it returns false.
//          **********************************************************
            Method boolean IsPrime(int number)
                Declare result as boolean
                result = true
                declare i as integer
                i = 2
                loop while i < number
                    if ((number % i) == 0)
                        result = false
                        exit loop
                    end if

                end loop
                return result
            end Method

        end Class
    End Package
End Project

JAVA 代码:

package printTheFirstNPrimesPackage;
import java.util.*;

public class PrintTheFirstNPrimes 
    public static void main(String [] args) 
        int numberOfPrimes;
        Scanner primes = new Scanner(System.in);
        System.out.println("How many prime numbers do you want?");
        numberOfPrimes = primes.nextInt();
        // Call the method PrintNPrimes(numberOfPrimes)
    
    public static void PrintNPrimes(int n) 
        int i;
        int myNum;
        myNum = 2; // The first prime number
        i = 0; 
        while (i < n) 
//      if IsPrime(myNum) // Call the IsPrime method (see below) 
                i = i + 1;
                System.out.println(myNum);
        myNum = myNum + 1;
        
    
    public static boolean IsPrime(int number) 
        boolean result;
        result = true;
        int i = 2;
        while (i < number) 
            if ((number % 1) == 0)
                result = false;
            
        return result;
        
    

我的主要问题是在 if 语句中调用 IsPrime 方法。我收到一条错误消息,说 IsPrime 无法从我知道的 int 转换为 boolean,但伪代码限制了我做很多其他事情。我还想就如何在方法 main 中调用 PrintNPrimes 方法提出建议。谢谢。

【问题讨论】:

请复制并粘贴确切的错误信息。我相信您的释义中遗漏了一些重要的细节。 应该改成if (isPrime(number)) 吗? 这里也有很多大括号放错地方了。 i = 0; 上的左大括号应向下移动一行,位于 while 之后。 System.out.println(myNum); 之后还应该有一个右大括号,更不用说您需要在 IsPrime 内部的循环中增加 i(以及将 1 替换为 i)。写一个真正的答案太累了,但这是一段工作代码(ideone.com/drG9p)。 【参考方案1】:

更新下面的代码,解决两个(包括 if 语句)的编译错误:

printNPrimes(numberOfPrimes);

if (isPrime(myNum)) // Call the IsPrime method (see below)

完整更新代码:

public static void main(String [] args) 
    int numberOfPrimes;
    Scanner primes = new Scanner(System.in);
    System.out.println("How many prime numbers do you want?");
    numberOfPrimes = primes.nextInt();
    printNPrimes(numberOfPrimes);

public static void printNPrimes(int n) 
    int i;
    int myNum;
    myNum = 2; // The first prime number
    i = 0; 
    while (i < n) 
     if (isPrime(myNum)) // Call the IsPrime method (see below) 
            i = i + 1;
            System.out.println(myNum);
    myNum = myNum + 1;
    

public static boolean isPrime(int number) 
    boolean result;
    result = true;
    int i = 2;
    while (i < number) 
        if ((number % 1) == 0)
            result = false;
        
    return result;

我没有检查逻辑。

【讨论】:

【参考方案2】:

如果 IsPrime(myNum)

需要

if (IsPrime(myNum))

还要确保恢复你的花括号。我看不出这会导致错误的任何原因。如果您仍有问题,请发布确切的错误消息。

【讨论】:

请务必接受答案以结束问题,并为您认为有用的任何内容投票(当您有足够的代表时)。【参考方案3】:

因为您的PrintNPrimes 是静态方法,您可以通过传递numberofPrimes 来调用该方法。

例子:

 public static void main(String [] args) 
        int numberOfPrimes;
        Scanner primes = new Scanner(System.in);
        System.out.println("How many prime numbers do you want?");
        numberOfPrimes = primes.nextInt();
       PrintNPrimes(numberOfPrimes);
    
  ..........

注意:Java 命名约定建议在定义方法时使用第一个字母作为小写字母。

您可以按照相同的方法调用其他方法。

【讨论】:

以上是关于Java:在方法 main 中调用方法的主要内容,如果未能解决你的问题,请参考以下文章

关于java方法调用

回顾基础,Java如何在main方法中调用自身的main方法

java中一个方法调用另一个方法。

Java:为啥我不能在 main 之外调用这个方法? [关闭]

java如何调用另个程序的main函数

简要叙述java 调用一个方法的实现步骤