在Java中,如何正确调用Arrays类方法?

时间:2014-04-19 17:36:54

标签: java arrays methods

编辑:说真的,什么是downvotes?我以为我用足够的细节描述了我的问题,并且在发布之前对此进行了相当好的研究,即使我无法自己找到答案。

Java中有一个内置的Arrays类,它有一些有用的数组方法,比如binarysearch()和sort(),但由于某种原因,我无法弄清楚如何正确调用它的方法。我正在尝试在数组中搜索特定字符串,如果找到则我想返回索引,所以我尝试了这个:

int rankID = Arrays.binarysearch(cardRanks, myRank);

“cardRanks”是我的数组,“myRank”是我想要搜索的传入的字符串参数。我也试过这个(虽然我怀疑这会返回一个布尔值而不是一个整数):

int rankID = Arrays.asList(cardRanks).contains(myRank);

每当我尝试其中任何一个时,我在编译时都会遇到同样的错误:

Error: cannot find symbol
symbol:   variable Arrays

这个错误基本上告诉我编译器不会将“Arrays”识别为类,并将其视为变量。

据我所知,Java中没有任何“#include”类型语句,这是我的第一个猜测,因此我假设内置类只是包含在内(尽管这可能是我的麻烦,如果我的假设是错误的)。我在论坛上查了几个关于数组和问题的教程,关于binarysearch()和Arrays类(这是我发现的关于“aslist.contains”的部分),但是我找不到这个答案。 / p>

我做错了什么?调用Arrays类方法的正确方法是什么?是否有另一种方法告诉编译器我想使用java.util.Arrays库?

这是我在这个特定类中使用的其余代码,以防错误出现在我的代码中:

class PlayingCards {
    private static String[] cardRanks = {"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};
    private static String[] cardSuits = {"spades", "hearts", "clubs", "diamonds"};
    private String rank;
    private String suit;

    public PlayingCards (String myRank, String mySuit) {
        //rank = myRank;
        suit = mySuit;
        int rankID = Arrays.binarysearch(cardRanks, myRank);
        System.out.println("Rank found and is index: " + rankID);
        rank = cardRanks[rankID];
        System.out.println("Associated rank is: " + rank);
    }


    public PlayingCards (int myRank, int mySuit) {
        rank = this.cardRanks[myRank];
        suit = PlayingCards.cardSuits[mySuit];
    }

    public PlayingCards () {
        rank = "Ace";
        suit = "spades";
    }

    public static void main(String[] args) {
        System.out.println("Draw some cards!");
        PlayingCards card1 = new PlayingCards("King","diamonds");
        //PlayingCards card2 = new PlayingCards("5","monkeys");
        PlayingCards card3 = new PlayingCards(1,0);
        PlayingCards card4 = new PlayingCards();

        System.out.println("Your 1st card is: a " + card1.rank + " of " + card1.suit + ".");
        //System.out.println("Your 2nd card is: a " + card2.rank + " of " + card2.suit + ".");
        System.out.println("Your 3rd card is: a " + card3.rank + " of " + card3.suit + ".");
        System.out.println("Your 4th card is: a " + card4.rank + " of " + card4.suit + ".");
    }
}

当我运行此代码时,违规行被注释掉,并且只接受给定的排名和套装字符串而不检查数组,一切正常,所以我认为我的数组声明没有做错(因为我当我使用通过数组索引查找排名和适合的构造函数时,可以拉出正确的条目。任何提示或帮助将不胜感激!

我实际上正在逐步完成官方Java“线索”教程,我一直在寻找各种示例或深入解释使用数组,但几乎没有信息。也许这只是一个更高级的主题,不适合初学者?

2 个答案:

答案 0 :(得分:2)

你必须导入它:

import java.util.Arrays;

位于文件的顶部。

或者,您可以通过其完全限定名称引用它而无需导入它,例如java.util.Arrays.asList(cardRanks)

仅自动导入java.lang.*(以及您的类本身所在的包);您必须明确导入的所有其他内容。

另请注意,Arrays.binarySearch要求您的输入数组按升序预先排序才能正常工作。

答案 1 :(得分:2)

你在课程开始时错过了import陈述:

import java.util.Arrays;