Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在这种形式下打印这个2d字符串数组而不需要太多的工作(java)?_Java_Arrays_Printing_Output_Field - Fatal编程技术网

如何在这种形式下打印这个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")));