首页 > 解决方案 > 如何让我的循环在 java GUI 中只打印一个值?

问题描述

所以我在这里有一个 for 循环:

String[] arr = new String[15];
answer = Integer.parseInt(keyTxt.getText());
        key = answer % 15;
        value = valueTxt.getText();

for(x = 0; x < arr.length; x++){
                   if(arr[key] != null){
                       arr[key+1] = value;
                       listModel.addElement(x + " : " + arr[x]);
                   }
                   else if(arr[key] == null){
                       arr[key] = value;
                       listModel.addElement(x + " : " + arr[x]);
                   }

               }

这是我在键中输入 118 并在值中输入 Love 时打印的输出

0 : null
1 : null
2 : null
3 : null
4 : null
5 : null
6 : null
7 : null
8 : null
9 : null
10 : null
11 : null
12 : null
13 : Love
14 : Love

这是我的愿望输出13 : Love

当我再次进入118 in keynew love in values

0 : null
1 : null
2 : null
3 : null
4 : null
5 : null
6 : null
7 : null
8 : null
9 : null
10 : null
11 : null
12 : null
13 : Love
14 : New Love

这是我想要的输出:

13 : Love
14 : New Love

请有人帮助我,我被困了2天。谢谢 :)

编辑:这是散列,我们不允许使用,HashTable并且HashMap只允许使用一个数组。

这是我到目前为止所做的

for(int x = 0; x < arr.length; x++){
         if(arr[key] != null){
         key++;
        }
         else if(arr[key] == null){
          key = key;
          }
         
          listModel.addElement(key + " : " + (arr[key] = value));
       }

**注意:** 这不是在终端中,而是在 Java Gui 中

标签: javaarraysfor-loophash

解决方案


您需要分离用于查找非空点并在 listModel 中添加条目的逻辑。
找到位置后,使用break;语句退出循环:

//put key in non empty spot
for (; key < arr.length; key++) {
    if (arr[key] == null) {
        arr[key] = value;
        break;
    }   
}

//add entries to display
for (int i = 0; i < arr.length; i++) {
    listModel.add(i + " : " + arr[i] );
}

演示代码:

public class Test {
    public static List<String> listModel = new ArrayList<>();   

    public static void main(String[] args) throws Exception {
        String[] arr = new String[15];
        
        int answer = 118;
        put(arr, answer, "Love");       
        //print
        listModel.stream().forEach(System.out::println);
        
        System.out.println("\n Adding again -----------\n");
        put(arr, answer, "Love");       
        //print
        listModel.stream().forEach(System.out::println);
        
    }
    static void put(String[] arr, int key, String value) {
        key = key % 15;
        while (key < arr.length) {
            if (arr[key] == null) {
                arr[key] = value;
                break;
            } else {
                key++;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            listModel.add(i + " : " + arr[i] );
        }

    }
}

注意:我在演示中使用 ArrayList 而不是可视组件。


推荐阅读