【发布时间】:2016-09-20 16:39:42
【问题描述】:
我在比较循环中的两个字符串时遇到问题。
假设我想在一个 ArrayList 中放入两个单词。我决定通过 inputDialogeBox 写这两个词并将它们放在列表中。如果两个单词相同,则不会将第二个单词添加到列表中。
但是当我比较这两个字符串时,程序似乎并不关心它们是否相同并且都在列表中。
这是我的代码:
package testing;
import javax.swing.*;
public class Testing {
public static void main(String[] args) {
Word c = new Word();
// word 1
String word;
word = JOptionPane.showInputDialog("Write a word: ");
System.out.println("word1 = " + word);
c.setWord(word);
// word 2
word = JOptionPane.showInputDialog("Write a new word: ");
System.out.println("word2 = " + word);
c.setWord(word); // sätt kortet≤
System.out.println("words = " + c.getWord().size() + " " + c.getWord());
}
}
还有我的班级:
package testing;
import java.util.ArrayList;
public class Word {
ArrayList<String> words = new ArrayList<>();
public void setWord(String word) {
// set first value in arraylist to start the loop
if (words.isEmpty()) {
words.add("default");
}
for (int i = 0; i < words.size(); i++) {
if (!words.get(i).equals(word)) {
words.add(word);
System.out.println("words.get(i): " + words.get(i) + " word: " + word);
break;
}
}
}
public ArrayList getWord() {
return words;
}
}
我的猜测是问题在于我添加了一个默认值,只是为了得到一些可以循环的东西。否则,如果 ArrayList 为空,我将无法启动循环。但也许有更好的方法?
谢谢
【问题讨论】:
-
如果列表中有 any 个不是该单词的单词,则您正在将该单词添加到列表中。
-
对不起。我是初学者 :-)
1) 如果 ArrayList 为空 - 将第一个值添加到列表中 2) 我循环遍历该唯一值。 3)如果字符串(默认)与第一个单词不同,它将第一个单词添加到 ArrayList 4)如果字符串(默认和 word1)不是第二个单词,它将它添加到 ArrayList 但我猜我把它搞砸了:-) -
如果要防止重复,请使用 Set,而不是 List。
-
(顺便说一句,我如何以正确的格式编辑我的帖子?)
对不起。我是初学者:-) 1) 如果 ArrayList 为空 - 将第一个值添加到列表中 2) 我循环遍历该唯一值。 3)如果字符串(默认)与第一个单词不同,它将第一个单词添加到 ArrayList 4)如果字符串(默认和 word1)不是第二个单词,它将它添加到 ArrayList 但我猜我把它搞砸了:-)