我正在学习阵列,我做了一些实验,大部分都很顺利,但是现在我被卡住了。 我要归档的是,查找一个特定值(String,int或其他)是否存在于Array中,如果存在,请使用该值,即下面的代码,我基本上计算该值存在于内部的次数数组:
package arraysOnly;
import java.util.*;
public class ArrayContainsString
{
public static void main(String[]args)
{
Scanner sc = new Scanner(System.in);
int arraySize = 0;
int wordCount = 0;
System.out.println("How many words are you gonna type?: ");
arraySize = sc.nextInt();
String[] words = new String[arraySize]; // Simple array, the size of which will be decided from the user-input
for(int count = 0; count < arraySize; count++)
{
System.out.println("Enter your " + (count+1) + ": ");
words[count] = sc.next();
}
//Basically this is the part I'm having troubles
if(in_array("ubt", $words)
{
wordCount++;
}
}
}
我知道这件事,
if(Arrays.asList(words).contains("ubt"));
基本上将数组转换为List / ArrayList或者其他什么,但是我想在可能的情况下将其视为数组。
答案 0 :(得分:2)
简单的解决方案
public static boolean contains(String toFind, String[] strings) {
for (String str : strings) {
if (str.equals(toFind)) return true;
}
return false;
}
编辑: 要在用户输入单词后增加它,请在循环中使用它:
System.out.println("Enter your " + (count+1) + ": ");
words[count] = sc.next();
if (words[count].equals("ubt")) wordCount++;
答案 1 :(得分:2)
数组是错误的数据结构; Set
是首选武器:
Set<String> words = new HashSet<>()
for (int count = 0; count < arraySize; count++) {
System.out.println("Enter your " + (count+1) + ": ");
words.add(sc.next());
}
if (words.contains("ubt"))
wordCount++;
}
contains()
的{{1}}方法在恒定时间内完成,无论该集合有多大。虽然性能与这种用途的小输入尺寸无关,但养成为工作选择合适工具的习惯是很好的。它还使您的代码更清晰。
一般来说,除非你绝对必须使用数组,否则不要使用数组。它们很少用于商业代码。
答案 2 :(得分:1)
你可以迭代数组
for (String str : array){
if(str.equals("ubt")){
wordCount++;
}
}
修改强>
它只相当于正常的循环
for(int i=0; i<array.length; i++) {
if(array[i].equals("ubt")){
wordCount++;
}
}