如何在这种形式下打印这个2d字符串数组而不需要太多的工作(java)?
我试图自己创建“猫发现老鼠”的东西,但我在做这件事时遇到了麻烦,因为我打印字段的方式非常复杂/低效 所以我有这个领域:如何在这种形式下打印这个2d字符串数组而不需要太多的工作(java)?,java,arrays,printing,output,field,Java,Arrays,Printing,Output,Field,我试图自己创建“猫发现老鼠”的东西,但我在做这件事时遇到了麻烦,因为我打印字段的方式非常复杂/低效 所以我有这个领域: String[][]field = { {"+", "+", "+", "+", "+", "+", "+", "+", "+"}, {"+", " ", " ", " ", " ", " ", " ", "M", "+"}, {"+", " ", "+", "+", "+", "+", "+", " ",
String[][]field = {
{"+", "+", "+", "+", "+", "+", "+", "+", "+"},
{"+", " ", " ", " ", " ", " ", " ", "M", "+"},
{"+", " ", "+", "+", "+", "+", "+", " ", "+"},
{"+", " ", "+", "+", " ", " ", "+", " ", "+"},
{"+", " ", " ", " ", " ", "+", "+", " ", "+"},
{"+", " ", " ", "+", "+", "+", "+", " ", "+"},
{"+", "C", " ", " ", " ", " ", " ", " ", "+"},
{"+", "+", "+", "+", "+", "+", "+", "+", "+"},
};
应该是这样印刷的:
+++++++++
+ M+
+ +++++ +
+ ++ + +
+ ++ +
+ ++++ +
+C +
+++++++++
这是我的代码,我是怎么打印的。打印效果很好,但编码和完成的方式效率很低。。。难道没有一种方法可以只用几行代码就可以做到这一切吗?请注意,它必须看起来和我贴的一模一样
这是我的方式:
public class CatMouseCheap {
public static void main(String[] args){
String[][]field = {
{"+", "+", "+", "+", "+", "+", "+", "+", "+"},
{"+", " ", " ", " ", " ", " ", " ", "M", "+"},
{"+", " ", "+", "+", "+", "+", "+", " ", "+"},
{"+", " ", "+", "+", " ", " ", "+", " ", "+"},
{"+", " ", " ", " ", " ", "+", "+", " ", "+"},
{"+", " ", " ", "+", "+", "+", "+", " ", "+"},
{"+", "C", " ", " ", " ", " ", " ", " ", "+"},
{"+", "+", "+", "+", "+", "+", "+", "+", "+"},
};
for(int i=0; i<field.length; i++){
for(int j=0; j<field[i].length; j++){
System.out.print(field[i][j]);
}
System.out.println("");
}
}
}
公共类CatMouseCheap{
公共静态void main(字符串[]args){
字符串[][]字段={
{"+", "+", "+", "+", "+", "+", "+", "+", "+"},
{“+”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“+”},
{"+", " ", "+", "+", "+", "+", "+", " ", "+"},
{"+", " ", "+", "+", " ", " ", "+", " ", "+"},
{"+", " ", " ", " ", " ", "+", "+", " ", "+"},
{"+", " ", " ", "+", "+", "+", "+", " ", "+"},
{“+”,“C”,,,,,,,,,,,,,,,,,“+”},
{"+", "+", "+", "+", "+", "+", "+", "+", "+"},
};
对于(int i=0;i
与java8一起工作我知道这一点。但是输出很糟糕,它不像我在问题中描述的那样:/也许有办法修改它?编辑:我没有投反对票!@cnmesr很抱歉我错过了它。改为java8。希望这有助于找到从猫到鼠标的最短路径。我是说我使用的2个for循环制作了一个l如果我的想象正确的话,编写代码就更难了。但是这已经很好了,换一种方式来看,谢谢:)Java 8实现了这一点。更多信息请参阅此。它非常相似。为什么你认为这是低效的?我会说,这是O(n)复杂性和它不会变得更好。:-)这是最有效的。也许使用stringbuilder而不是单独的字符会使它稍微快一点,但这并不明显。@Berger,因为我想找到从猫到鼠标的最短路径。在这两个for循环中,我在做它时遇到了很大的麻烦:s Edit:这不应该是O(n),而不是O(n^2)或我错了吗?@cnmesr它是O(n),因为迭代的次数等于元素的数量。如果你迭代所有元素,并将它们与所有其他元素进行比较,那么它将是O(n^2)。
System.out.println(
Arrays.stream(field)
.map(a -> String.join("", a))
.collect(Collectors.joining("\n")));