首页 > 解决方案 > 使用静态方法

问题描述

我正在尝试使用静态方法构建矩阵,并使用构建的矩阵返回一个新的构造函数,但是每当我尝试获取矩阵值时,它最终都是空的。

public class KeyTable {

    private char[][] key;
    final static int rows = 5;
    final static int columns = 5;

    public KeyTable(char[][] key) {
        this.key = key;

    }
    public static KeyTable buildFromString(String keyPhrase)
    {
        char[][] alpha = new char[5][5];
        char[] alphabet = "abcdefghiklmnopqrstuvwxyz".toCharArray();
        int followingAlphabet = 0;
        for(int r = 0; r < rows; r++)
        {
            for(int c = 0; c < columns; c++)
            {
                if(followingAlphabet <= keyPhrase.length()-1)
                    alpha[r][c] = keyPhrase.charAt(followingAlphabet);
                else
                    alpha[r][c] = alphabet[followingAlphabet];
                followingAlphabet++;
            }
        }
        System.out.println(Arrays.deepToString(alpha));
        return new KeyTable(alpha);
    }

    public char[][] getKeyTable()
    {
        return this.key;
    }
}

主类:

package com.company;


import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        char[][] alpha = new char[5][5];
        KeyTable key = new KeyTable(alpha);
        System.out.println(Arrays.deepToString(alpha));
        KeyTable.buildFromString("EXAMPLE");
        key.getKeyTable();
        System.out.println(Arrays.deepToString(alpha));
        System.out.println(Arrays.deepToString(key.getKeyTable()));

    }
}

标签: java

解决方案


这是因为你做了两件不同的事情。首先,您使用数组创建了一个 KeyTable 对象。然后你运行了一堆其他随机的东西(buildfromString 方法)。然后你要求它返回一个空键并打印它。我不知道你实际上想要做什么,但它肯定不会打印任何东西,因为你没有将它存储在任何地方。你也让它返回一个没有意义的空对象。像这样的东西:

key=KeyTable.buildFromString("Example");

然后,您可以在主应用程序中返回结果以正确显示信息。我希望这对你有帮助。如果您提供有关您实际尝试做的事情的更多详细信息,我可以提供更多帮助。


推荐阅读