小编Col*_*747的帖子

Java - StackOverflowError - 访问HashMaps

java.lang.StackOverflowError试图在另一个类中调用方法时得到一个.

我认为问题是由于每个类在彼此之间实例化,但我不确定它为什么会导致此错误或如何解决它.

来自Main()的方法调用:

    nexaConnect.returnAllChronologicalByRoom("bathroomSensorMappings");
Run Code Online (Sandbox Code Playgroud)

逻辑():

public class Logic {
  private SensorMaps mapAccess = new SensorMaps();

  void returnAllChronologicalByRoom(String room) {
    System.out.print(mapAccess.returnMap(room).get(0));
  }
}
Run Code Online (Sandbox Code Playgroud)

SensorMaps:

public class SensorMaps {
  private Logic sensorConnect = new Logic();

  HashMap<Integer, String> returnMap(String mapChoice) {
    return MapRegistry.find(mapChoice);
  }
}
Run Code Online (Sandbox Code Playgroud)

还有第三个MapRegistry类,但我不认为这会导致问题,但我会将其包含在内以保证完整性:

MapRegistry:

class MapRegistry {
  static Map<String,HashMap<Integer,String>> allMaps = new HashMap<>();

  static void register(String name, HashMap<Integer,String> myMap) {
    allMaps.put(name, myMap);
  }

  static HashMap<Integer,String> find(String name) {
    return allMaps.get(name);
  }
}
Run Code Online (Sandbox Code Playgroud)

错误输出中的两个关键行:

at com.company.SensorMaps.<init>(SensorMaps.java:11)
at com.company.Logic.<init>(Logic.java:19)
Run Code Online (Sandbox Code Playgroud)

参考线: …

java stack-overflow

1
推荐指数
1
解决办法
160
查看次数

数组删除 - 最后一个条目重复

我有代码从数组中删除一个条目,然后将所有元素向下移动一个索引,这样空的空格将留在数组的末尾.问题是数组中的最后一个条目被复制到已删除的索引中.

这是输入所有记录时的数组:

[entryOne, entryTwo, entryThree, entryFour, entryFive, entrySix, entrySeven, entryEight, entryNine, entryTen]

然后我运行我的代码删除索引5并打印数组,这是显示的:

[entryOne, entryTwo, entryThree, entryFour, entryFive, entrySeven, entryEight, entryNine, entryTen, entryTen]

如何才能将最终索引清空?

添加记录代码:

  static void addStudent() {
    if (nameArrayCount < 10) {
      System.out.println("Enter the student's name in the following format - surname, forename: ");
      studentName = input.next();
      studentNamesArray[nameArrayCount] = studentName;
      nameArrayCount = nameArrayCount + 1;
    }
    else if (nameArrayCount == 10) {
      System.out.println("******Array is full, please delete a student before adding another.*****");
    }
    if (markArrayCount < 10){
    System.out.println("Enter …
Run Code Online (Sandbox Code Playgroud)

java arrays sorting

0
推荐指数
1
解决办法
101
查看次数

将C++程序输出作为Java输入

我遇到一种情况,我正在寻找我的 Java 程序作为 BASH 脚本运行,而 BASH 脚本又将运行 C++ 程序。

我希望将 C++ 程序的输出(打印到终端的纯文本字符串)作为 Java 程序的输入。

我的第一次尝试是使用以下代码从终端读取输入,但我不确定如何将其从用户输入转换为自动获取 C++ 输入。

Console c;
c = System.console();
if (c == null) {
  System.out.println("No console.");
  System.exit(1);
}
String data = c.readLine();
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用InputStreamReader重定向 C++ 程序的输出:

Java代码:

BufferedReader input = null;
try {
  input = new BufferedReader(new InputStreamReader(System.in));
  String htmlLine = null;
  while ((htmlLine = input.readLine()) != null) {
    System.out.println(htmlLine);
  }
}
Run Code Online (Sandbox Code Playgroud)

重定向输出的命令:

java -jar program.jar arg1 arg2 arg3 < ./runActivities.sh
Run Code Online (Sandbox Code Playgroud)

然而,其结果是它只是将内容打印runActivities.sh到终端。

c++ java linux io

0
推荐指数
1
解决办法
1850
查看次数

Java - 方法参数,String后跟List

我有一个接受a StringString<List>as方法参数的Java方法.如何区分String和不属于List?

方法:

void returnValues(String sensor, List<String> attributes)
Run Code Online (Sandbox Code Playgroud)

呼叫:

nexaConnect.returnValues(Arrays.asList("19455746", "blobJson", "deviceMfg", "eventCode", "sensorClass", "sensorUUID", "timeStamp", "uID"));
Run Code Online (Sandbox Code Playgroud)

我能看到的唯一可能的工作是删除第一个String并在List中包含值,然后获取列表的第一个值并以这种方式使用它.有没有办法将它们分开,以便它不是列表的一部分?

java list arraylist parameter-passing method-parameters

-2
推荐指数
1
解决办法
66
查看次数