尝试仅在第一个空间的文件中将字符串转换为另一个字符串

时间:2014-12-03 04:32:00

标签: java arrays stringtokenizer

免责声明,我已经在java工作了大约一个月。我完全迷失了。我试图让用户输入一个短语,如果在该数组中找到该短语中的任何字符串,它会在一行中返回相应的字符串。如果找不到字符串,它就会跳过它。

所以如果有人输入"狗吃我的鱼"

并且数组成立: 狗佩罗 吃完了 鱼黄鳟鱼

它将返回: 穿着黄色鳟鱼

我还没有编写代码来打印出我已经得到的内容,但我知道这段代码不起作用。

任何帮助将不胜感激。

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

public class ArrayTest2 {
    public static void main(String[] args)
    throws java.io.IOException {
        Scanner input = new Scanner(System.in);

        String userString = " ";
        userString = englishString();       

        String[][] wordList = new String[10][2];
        loadEnglishString(wordList);

    }
    public static String englishString() {
        Scanner input = new Scanner(System.in); 
        String s1 = " ";
        System.out.println("Please enter a phrase to translate: ");
        s1 = input.nextLine().trim().toUpperCase();

        return s1;
    }



    public static void loadEnglishString(String[][] wordList)  
        throws java.io.IOException {
        String filName = " ";       
        filName = ("/home/chrism/ArrayTest2.txt");
        Scanner input = new Scanner(new File(filName));  
        while(input.hasNextLine()) {
            String line = input.nextLine();
            StringTokenizer st = new StringTokenizer(line);
            while (st.hasMoreTokens()) {
                boolean stop = false;
                for(int i = 0; i < wordList.length; i++) {
                    if(stop)
                        break;
                    for(int j = 0; j < wordList[i].length; j++) 
                        if(input.hasNextLine())
                            wordList[i][j] = input.nextLine();
                        else {
                            stop = true;
                        }
                        break;
                }
            }
        }

        input.close();
    }


}

2 个答案:

答案 0 :(得分:0)

您肯定想要更改for循环。括号是你的朋友。

for(int i = 0; i < wordList.length; i++) {
    if(stop)
        break;
    for(int j = 0; j < wordList[i].length; j++) {
        if(input.hasNextLine())
            wordList[i][j] = input.nextLine();
        else {
            stop = true;
        }

    }
}

你拥有它的方式,两个增量都注册为死代码,因为你的第二次中断总是第一次调用循环,并且你的else注册为与第一个if(stop)一起注册。

编辑:不确定其他人会如何结合,但是在第一次运行之后肯定会打破这个中断。

答案 1 :(得分:0)

// package com.myjava.stokenizerr;

import java.util.StringTokenizer;

public class MyStringTokenizer {

    public static void main(String a[]){

/* your code for user input string */
/* assume input as dog eat my fish */

        String input = "dog eat my fish";
        String msg = "dog perro eat munched fish yellow trout";
        StringTokenizer st1 = new StringTokenizer(msg," ");
        StringTokenizer st2 = new StringTokenizer(input," ");
        while(st1.hasMoreTokens()){
    System.out.println(st1.nextToken()); // Store this one(first) string array 
        }
    while(st2.hasMoreTokens()) {
        System.out.println(st2.nextToken());   // Store in another(second) array
        }
        /* Now Compare both the arrays */
        /* If the strings are equal then remove string from second array */\
        /* If equal just skip it */
   }
}

请参阅上面的代码st1.nextToken(),st2.Tokens()将为您提供值 比较采取两个循环

 for(i==0;i<array1length();i++) {  

 for(j==0;j<array2length();j++) { 
      // Your code for comparsion
    }
  }