【问题标题】:Creating a table in a for loop java在for循环java中创建表
【发布时间】:2015-12-12 14:24:33
【问题描述】:

我有 2 个值是单词的数组,第一个表中的每个单词都与一个文本(字符串)相关联,现在第二个表中的每个单词都显示了(int)在文本(字符串)中重复的次数。预期的表格应该是这样的:

这是我目前写的代码:

keyW = txtKeyword.getText();
search = textField.getText();
System.out.println("String for car = " + search);
System.out.println("String keyword = " + keyW);
btnUpload.setEnabled(false);
btnNewButton_1.setEnabled(false);
btnNewButton.setEnabled(false);
txtKeyword.setEnabled(false);
textField.setEditable(false);

//waitLabel.setVisible(true);
int iar = 0;
int item;

Map<String, Integer> dictionary = new HashMap<String, Integer>();

String[] searchArray = search.split(",");
String[] itemsFromArray1 = new String[searchArray.length];
//Keyword1 = ("Searched Key"+ "\r\n\t ");
//listKeys.add(Keyword1);           
for (iar = 0; iar < searchArray.length; iar++) {
    itemsFromArray1[iar] = searchArray[iar].trim();
    Keyword1 = (searchArray[iar]);
    //listKeys.add(Keyword1);
}

String[] items = keyW.split(",");

for (item = 0; item < searchArray.length; item++) {

    WebDriver driver = new HtmlUnitDriver();
    ((HtmlUnitDriver) driver).setJavascriptEnabled(true);

    driver.get("https://en.wikipedia.org/wiki/" + searchArray[item]);
    tstr1 = driver.findElement(By.xpath("//*[@id='content']")).getText();
    driver.quit();

    String[] itemsFromArray = new String[items.length];
    for (int i = 0; i < items.length; i++) {
        itemsFromArray[i] = items[i].trim();

    }
    for (String string : itemsFromArray) {

        int i = countWords(tstr1, string);

        dictionary.put(searchArray[item].concat(string), i);

        System.out.println("ARRAY " + dictionary);

    }
}

private static int countWords(String tstr1, String string) {
    tstr1 = tstr1.toLowerCase();
    string = string.toLowerCase();
    int posCount = 0;
    String positive = string;
    Pattern positivePattern = Pattern.compile(positive);
    Matcher matcher = positivePattern.matcher(tstr1);
    while (matcher.find()) {
        posCount++;
    }
    return posCount;
}

我尝试使用Map&lt;String, Integer&gt; dictionary = new HashMap&lt;String, Integer&gt;(); 实现此目的,但结果 (dictionary.put(searchArray[item], i);) 是错误的。谁能给我一个想法如何解决这个问题。谢谢!

****更新****

现在控制台中的结果是这样的:

ARRAY { boyanimal=4, catfree=18, catanimal=60,  boyfree=2, catgender=0,  boygender=6,  windowfree=5}
ARRAY { boyanimal=4, catfree=18, catanimal=60,  boyfree=2,  windowanimal=4, catgender=0,  boygender=6,  windowfree=5}
ARRAY { boyanimal=4, catfree=18, catanimal=60,  boyfree=2,  windowanimal=4, catgender=0,  boygender=6,  windowgender=0,  windowfree=5}

有些价值观在重复。如何使显示像一张桌子?

【问题讨论】:

    标签: java for-loop dictionary hashmap jtable


    【解决方案1】:

    试试这个:

    Map<String, Integer> tableMap = new HashMap<String, Integer>();
    

    保持密钥为:

    tableMap.put("Word1-Search1",23);
    

    使用它,您将始终拥有每个键的唯一组合。

    我希望您不想将数据存储在数据结构中?相反,您应该使用二维 String 数组来存储它。

    【讨论】:

    • 感谢 Danyal,但是当我尝试输入 2 个键 "Word1-Search1" 时出现错误,有没有办法声明一个带有 2 个键的表。谢谢!!!!
    • 不要把 2 个键 main :),连接字符串并将其添加为一个字符串
    • 它在控制台中显示正确的值,但是相同的字符串在重复,如何像表格一样格式化而不重复,我更新了答案,请看一下。谢谢
    • 同一个字符串不能重复..key在hashmaps中是唯一的
    • 非常感谢您的帮助,请告诉我是否有办法让输出看起来像我上面描述的表格。谢谢!!!
    【解决方案2】:

    回答您的最新更新:

    我认为您会因为这条线而获得多份副本。

    dictionary.put(searchArray[item].concat(string), i);
    

    我认为concat 正在应用于整行元素。我会用我的调试器来分析这个,看看searchArray[item] 的值是什么,string 的值是什么。

    【讨论】:

    • 亲爱的 Craig,预期的输出是我有一个表,其中 searchArray[item] 是列名,string 是行名,i 是表的值.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多