gpt4 book ai didi

Java:在类之间发送变量

转载 作者:行者123 更新时间:2023-11-30 07:34:15 24 4
gpt4 key购买 nike

我有 FileHandle 类:

public class FileHandle {
public static String a;
public static String b;
public static String c;

public void openFile() throws FileNotFoundException {
File dir = new File("C:/Folder/DB");
if (dir.isDirectory()) {
for (File file : dir.listFiles()) {
Scanner s = new Scanner(file);
//String f = file.getName();
// System.out.println("File name:" + f );
while (s.hasNext()) {
a = s.next();
b = s.next();
c = s.next();
System.out.printf("%s\n %s\n %s\n", a,b,c);
}
}
}

和常量类:

public class Constants {

FileHandle h = new FileHandle();
public static final String[] LIST_DATA = {FileHandle.a,FileHandle.b,FileHandle.c};
public static final int NEW_ELEMENT_ID = 0;

}

主要问题:为什么在我的 Constants 类中我只获得最后扫描的文档信息。顺便提一下,FileHandle 类扫描仪工作正常,一切都很好。唯一真正的困难是将变量发送到 Constants 类,正如我提到的,我只获得最后扫描的文档信息。

最佳答案

不确定是否理解您的问题。但假设想要跟踪不同的调用,您可以:

  • 连接 abc 中的字符串:

            a = (a == null) ? s.next() : a + " " + s.next();
    b = (b == null) ? s.next() : b + " " + s.next();
    c = (c == null) ? s.next() : c + " " + s.next();
  • 创建abc列表:

    public static List<String> a = new ArrayList<String>;
    public static List<String> b = new ArrayList<String>;
    public static List<String> c = new ArrayList<String>;
    ...
    a.add(s.next());
    b.add(s.next());
    c.add(s.next());

因为静态值是由同一个类的所有实例共享的,所以当你给它赋值时会覆盖之前的所有值。

注意:上面没有使用同步并且线程安全...

关于Java:在类之间发送变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629101/

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