我正在做一个程序,这个程序会乱动一个单词,而这个人必须猜到这个词。
如何将字符串向量拆分成两个字符串向量?
我从一个文本文件中得到一个字符串向量,该文本文件中有一个单词:提示类型的布局。这个词与提示用冒号隔开。我需要创建两个向量,将每个单词分开,但将其与提示相关联,这样当我单击“提示”时,就会出现正确的提示。
我尝试过创建一个循环,但我不太确定应该如何描述这个循环。我在这里迷路了,任何帮助都会很感激的。
发布于 2011-11-20 17:43:17
你走在正确的轨道上。循环遍历原始向量,并对每个单词:提示项,将它们拆分为两个单独的字符串,并将它们添加到两个新的向量中。
由于要将它们添加到两个向量中,所以单词和提示将在两个向量上具有相同的索引。这将保持他们的“联系”。
发布于 2011-11-20 17:51:07
看看String.split。
您可以将单词/提示存储在具有相同索引的两个数组中,也可以将它们放入带有HashMap的map.put(wordA, hintA)
中。HashMap
不会保持单词的顺序;如果您确实需要维护顺序,则可以使用LinkedHashMap
。
发布于 2011-11-20 18:55:24
我只是执行了其他人说的话。我没有使用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
https://stackoverflow.com/questions/8203343
复制相似问题