我需要将所有唯一的单词打印在字符串数组中,但不确定如何

时间:2018-11-30 06:31:39

标签: java

因此,完整程序会从文件中读取故事,并将每个单词存储在字符串数组中。阅读故事后,我需要在故事中打印所有唯一的单词,但我不知道该怎么做。这就是我所拥有的

import java.util.*;
import csci1140.*;
import java.io.*;

public class Story{
    public static final void main(String[] args){
    String[] storyArray = new String[28203];

    String fileName = "MultiLineStory.txt";
    BufferedReader reader = null;
    try{
        reader = new BufferedReader(new FileReader(fileName));
    }catch(FileNotFoundException fnfe){
        System.out.println("Unable to find file: " + fileName);
    }

    try{
        String input = null;            
        for(int i = 0; i < storyArray.length; i++){
            if((input = reader.readLine()) != null){
                 String fill = input;
                 storyArray[i] = fill;
            } 
           // System.out.print(storyArray[i] + " ");
        }
    } catch(IOException ioe){
        ioe.printStackTrace(System.err);
    } finally {
        try{
            reader.close();
        }catch(Exception e){}
    }

    long start = System.nanoTime();
    Arrays.sort(storyArray);
    long end = System.nanoTime();
    System.out.println("\n\nArrays.sort took " +((end - start)/1E9) + " Sec");
    distinctValues(storyArray);
}
public static boolean distinctValues(String[] array){   
int count = 0;      
     for (int i = 0; i < array.length - 1; i++) {

        if (array[i] == array[i + 1]) {
            count++;
            return true;
        }
    }
    System.out.println(count);
    return false;
 }

}

2 个答案:

答案 0 :(得分:0)

您可以使用HashSet<String>并将数组的所有元素放入其中。然后将它们一张一张地打印出来。

String[] allWordsArray = ...;
HashSet<String> uniqueWordsSet = new HashSet<>(Arrays.asList(allWordsArray));

for (String word : uniqueWordsSet)
{
    System.out.println(word);
}

答案 1 :(得分:0)

尝试一下:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.app"
        minSdkVersion 17
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
        pickFirst  'META-INF/*'
        exclude 'META-INF/proguard/androidx-annotations.pro'
        exclude 'META-INF/androidx.vectordrawable_vectordrawable.version'
        exclude 'META-INF/androidx.legacy_legacy-support-core-utils.version'
        exclude 'META-INF/androidx.loader_loader.version'


        exclude 'META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version'
        exclude 'META-INF/META-INF/androidx.appcompat_appcompat.version'
        exclude 'META-INF/androidx.appcompat_appcompat.version'
        exclude 'META-INF/androidx.viewpager_viewpager.version'*/
    }
}


dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.facebook.android:audience-network-sdk:4.99.0'
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.+'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.9'

}