在Array(而不是List)中查找特定值

时间:2015-08-19 17:51:19

标签: java arrays

我正在学习阵列,我做了一些实验,大部分都很顺利,但是现在我被卡住了。 我要归档的是,查找一个特定值(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或者其他什么,但是我想在可能的情况下将其视为数组。

3 个答案:

答案 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++;
     } 
}