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“线索”教程,我一直在寻找各种示例或深入解释使用数组,但几乎没有信息。也许这只是一个更高级的主题,不适合初学者?
答案 0 :(得分:2)
你必须导入它:
import java.util.Arrays;
位于文件的顶部。
或者,您可以通过其完全限定名称引用它而无需导入它,例如java.util.Arrays.asList(cardRanks)
。
仅自动导入java.lang.*
(以及您的类本身所在的包);您必须明确导入的所有其他内容。
另请注意,Arrays.binarySearch
要求您的输入数组按升序预先排序才能正常工作。
答案 1 :(得分:2)
你在课程开始时错过了import
陈述:
import java.util.Arrays;