2011-11-20 94 views
2

我正在研究一个程序,将争夺一个字,人必须猜测这个词。分裂矢量

如何将一个字符串矢量分成两个字符串矢量?

我从一个文本文件中给出了一个字符串矢量,该文本文件包含一个单词:提示类型的布局。这个词由提示中的冒号分隔。我需要创建两个向量来分隔每个单词,但保持它与提示相关联,以便当我点击“提示”时出现正确的提示。

我试过创建一个循环,但我不完全确定应该如何声明循环。我几乎失去了这里,任何帮助将不胜感激。

+0

明白这是功课,但我感到震惊的分配教授Java仍在使用矢量...! – berry120

回答

1

你在正确的轨道上。遍历你的原始矢量和每个单词:提示项目,将它们分成两个独立的字符串并将它们添加到两个新的矢量。

由于您将它们添加到两个向量中,因此单词和提示将在两个向量上具有相同的索引。这将使他们“关联”。

+0

使用HashMap或Hashtable会更好,然后用你想要的单词进行查找。例如:'HashMap myWordsAndHints = ...;字符串提示= myWordsAndHints.get(“myword”);' – VolatileDream

+0

它被标记为家庭作业,所以我假设问题要求向量。但是,如果没有,那么是的..地图会更好。 – Kal

+0

我希望他们没有被指示使用'Vector's;他们已被弃用大约十年。 – toto2

1

看看String.split

您可以将单词/提示存储在两个具有相同索引的数组中,也可以将它们放在HashMapmap.put(wordA, hintA)之间。 A HashMap将不保留单词的顺序;如果您确实需要维护订单,则可以使用LinkedHashMap

0

我简单地实现了别人说的。我没有使用LinkedHashMap,而是直接存储密钥并按顺序进行重新安装。一般来说,它应该是你的程序的一个特点,但它可以随意给予它们。这将是一个更有趣的游戏,对吧?

import java.io.*; 
import java.util.HashMap; 
import java.util.Vector; 

public class SOTest { 
    public static void main(String [] args) { 
      int numberofwords = 2; 
      HashMap<String, String> map = new HashMap<String,String>(numberofwords); 
      Vector<String> v = new Vector<String>(); 
      v.add("noobs:snobo"); 
      v.add("words:osrwd"); 

      String tmp; String tmpArray []; 
      String keys [] = new String [numberofwords]; 
      for (int i = 0; i < v.size(); i++) { 
        tmp = v.get(i); 
        tmpArray = tmp.split(":"); 
        map.put(tmpArray[1], tmpArray[0]); 
        keys[i] = tmpArray[1]; 
      } 

      for (int i = 0; i < map.size(); i++) { 
        System.out.println("hint[" + i + "]: " + keys[i] + "\n\tword: " + map.get(keys[i])); 
      } 
    } 
} 

输出:

$ javac SOTest.java && java SOTest 
hint[0]: snobo 
word: noobs 
hint[1]: osrwd 
word: words