【问题标题】:Why can't the driver find a method in a class?为什么驱动程序在类中找不到方法?
【发布时间】:2016-12-08 04:57:52
【问题描述】:

我制作了一个 Magic Square 程序,它即将完成,但是,我的类中的一个方法不能从 main 方法调用。我在课堂上有两种方法,但没有找到两种方法中的一种。 noRep 是一种确保输入的数字不重复的方法。当我尝试从 main 方法中使用它时,编译器会说

找不到符号方法 noRep (int[][])

这是课程:

public class MagicClass
{
    public static boolean noRep(int[][] square)
    {
        int[] one = new int[10];


        for (int i = 1; i < 10; i++)
            one[i] = 0;


        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {

                if (square[i][j] < 1 || square[i][j] > 9)
                    return false;

                one[square[i][j]]++;
            }
        }

        for (int i = 1; i < 10; i++)
            if (one[i] != 1)
                return false;

        return true;
}


public static boolean checkSums(int[][] square)
{
    for (int i = 0; i < 3; i++)
    {

        int sum = 0;
        for (int j = 0; j < 3; j++)
            sum += square[i][j];


        if (sum != 15)
            return false;
    }


    for (int j = 0; j < 3; j++)
    {
        int sum = 0;
        for (int i = 0; i < 3; i++)
            sum += square[i][j];


        if (sum != 15)
            return false;
    }


    if (square[0][0] + square[1][1] + square[2][2] != 15)
        return false;

    if (square[0][2] + square[1][1] + square[2][0] != 15)
        return false;

    return true;
}
}

这里是主要方法:

import java.util.*;
import java.util.Scanner;

public class MagicSquares {

    public static void main(String[] args) {
    int[][] square = new int[3][3];
    Scanner input = new Scanner(System.in);
    MagicClass MagicSqr = new MagicClass();
    //checkFrequency Frequent = new checkFrequency(square); TESTING
    //void Fre = MagicClass.checkFrequency (square); TESTING
    System.out.println("Please enter your magic square.");
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            square[i][j] = input.nextInt();

    if (checkSums(square && noRep(square)))
        System.out.println("You have a magic square");
    else
        System.out.println("Not a magic square");
}
}

【问题讨论】:

  • MagicSquare.noRep
  • 我该如何声明?我试图将初始化存储到变量中,但不知道要使用什么变量。感谢您的回复。
  • @user1211,不需要对象,方法是静态的

标签: java arrays class methods


【解决方案1】:

你在不同的类中调用 noRep。 由于它是静态方法(类级别方法),因此不需要实例。使用以下方式调用它:

if (MagicClass.checkSums(square) && MagicClass.noRep(square))

【讨论】:

  • 抱歉,我不确定如何使用MagicClass.noRep(square)。我会用 noRep(square) 替换它吗?或者我会把它放在上面的某个地方?我不擅长处理另一个类中的组合方法。
  • 那也行不通。应该是 if (MagicClass.checkSums(square) && MagicClass.noRep(square))
猜你喜欢
  • 1970-01-01
  • 2016-11-02
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
相关资源
最近更新 更多