【问题标题】:How to make my loop to print only one value in java GUI?如何让我的循环在 java GUI 中只打印一个值?
【发布时间】:2021-07-09 02:55:36
【问题描述】:

所以我在这里有一个 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 天。谢谢你:)

编辑:这是散列,我们不能使用HashTableHashMap,只允许使用一个数组。

这是我目前所做的

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 中

【问题讨论】:

  • 每个 Java 教程都应该解释简单的输入/输出。调整循环或将负责输出的代码移到循环外。
  • 我应该把它放在哪里?

标签: java arrays for-loop hash


【解决方案1】:

您需要将查找非空点和在 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 而不是可视组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2017-09-17
    • 2015-06-05
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    相关资源
    最近更新 更多