【发布时间】:2017-02-15 20:17:58
【问题描述】:
此代码应采用字符串数组列表并打印出这些字符串的修改版本,称为“状态”。例如:第一个字符串“3,3,L”应该打印 MMMCCCL。目前,当我输入 ArrayList goodMoves: ([3,3,L, 1,1,R, 3,2,L, 0,3,R, 3,1,L, 2,2,R, 2,2 ,L, 3,1,R, 0,3,L, 3,2,R, 1,1,L, 3,3,R]),代码返回 ArrayList 中的最后一个状态(“MMMCCCR”)和并非所有 11 个州:
MMCCCL
MCR
MMMCCL
CCCR
MMMCL
MMCCR
MMCCL
MMC
CCCL
MMMCCR
MCL
MMCCCR
这是我目前所拥有的:
// Testing method
public static void main(String[] args) {
int missionaries = 3;
int cannibals = 3;
boolean BoatState = true;
// Add initial state
goodMoves.add(toString(missionaries, cannibals, BoatState));
// Call checkBoat and explore
explore(missionaries, cannibals, BoatState, goodMoves, allMovesMade);
// Print all steps using helper method
System.out.println(makePicture(goodMoves));
// Print the total number of operations made
String finalMoves = ("Number of moves made: " + (goodMoves.size()-1));
System.out.println(finalMoves);
}
// Create strings of state spaces
public static String makePicture(ArrayList<String> goodMoves) {
// Initialize strings
String missString = "";
String cannString = "";
String moveString = "";
// Use input to create printout
for (String output: goodMoves) {
// Get numbers/character at each index of string
char missNum = output.charAt(0);
char cannNum = output.charAt(2);
char boatPos = output.charAt(4);
// Print number of M's and C's then concatenate them together
missString = new String(new char[missNum]).replace("\0", "M");
cannString = new String(new char[cannNum]).replace("\0", "C");
// Concatenate both strings
moveString = missString + cannString + boatPos + "\n";
}
}
// Return string of current state
return moveString;
}
如果需要任何说明,请告诉我。这个问题参考了常见的传教士和食人族游戏。提前致谢!
更新:问题已解决。感谢您的反馈
【问题讨论】:
-
插入 System.out.println() 语句(可能在每一行之后),这将帮助您了解每行代码在做什么并相应地进行更改。
-
您能否添加初始化
goodMoves的代码部分以了解输入的外观?你能描述一下你的琴弦应该如何分成几行吗?您说您的方法“打印”了字符串的修改版本,但我在您的代码中没有看到任何系统输出,也没有附加任何换行符。 -
我在我的代码的main方法中调用了名为makePicture的方法:System.out.println(makePicture(goodMoves));
-
你真的应该给我们输入和输出的精确样本。这段代码很难查看和调试。
-
我应该让“第一个字符串 "3,3,L" 应该打印 MMMCCCL" 更清晰吗?
标签: java string for-loop arraylist concatenation