gpt4 book ai didi

java - For-each 循环不会打印第一个请求的行

转载 作者:行者123 更新时间:2023-12-02 03:14:23 25 4
gpt4 key购买 nike

问题:

当我运行这个时,一切正常。假设我选择的 ID 是:0001、0002、0003、0004。他们的信息:info1、info2、info3、info4。如果我在扫描仪中输入 0002,我会得到 info2。正如你所期望的,但如果我输入 0001,我会期望得到 info1,但我什么也没得到。我用固定大小 3 的数组尝试过,效果很好。我改成了ArrayList,因为我不知道文件会有多长。为什么会出现这种情况?

我是编程新手,所以请原谅我缺乏关于在哪里寻找这些东西的知识。

我的程序的作用是,读入一个文件并将所有行添加到一个ArrayList中,然后要求用户输入,输入的格式应该是xxxx或4个字符。

我作为示例制作的文本文件如下所示,行上没有多余的空格:

0001
info1
4
0002
info2
5
0003
info3
9
0004
info4
10
0005
info5
3

主类:

public class Main {

public static ArrayList<Gameobject> games = new ArrayList<>();

public static void main(String[] args) throws IOException {

Scanner sc = new Scanner(new File("objects.txt"));

String id, info;
int amount;

while(sc.hasNextLine()) {

id = sc.nextLine();
info = sc.nextLine();
amount = Integer.parseInt(sc.nextLine());

Gameobject s = new Gameobject(id, info, amount);

games.add(s);
System.out.println(s.getId());
}

sc = new Scanner(System.in);

info(sc.next());

}

info方法如下。

public static void info(String id){  
for(Gameobject s : games){
if(s.getId().equals(id)){
System.out.println(s.getInfo());
}
}
}

以及类Gameobject

public class Gameobject {

String id, info;
int amount;

Gameobject(String id, String info, int amount) {
this.id = id;
this.info = info;
this.amount = amount;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}

我做了一些测试并将 games.get(0).getId() 传递给 info 方法,它起作用了。这让我从游戏对象中获得了 ID“0001”。然而,仅仅传递“0001”却没有。

最佳答案

我和 Lefteris008 一起处理这个问题。检查您的objects.txt .

你的 ID 是字符串,在你的 for 循环中你可以比较 Gameobject.getId()到控制台输入。

拥有您的objects.txt包含 ID 0001<space>而不是0001足以 .equals(id)产量false .

如果您的输入有可能格式错误,您可以尝试使代码更具防御性:

// This will remove leading and trailing whitespaces
id = sc.nextLine().trim();

这只是为了帮助您了解如何处理输入数据。这还远未准备好投入生产。

关于java - For-each 循环不会打印第一个请求的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40544106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com