当前位置: 首页 > 知识库问答 >
问题:

用“!!”反向金字塔java模式

饶谦
2023-03-14

我想做这个图案:

!!!!!!!!!!!!!!!!!!!!!!
\\!!!!!!!!!!!!!!!!!!//
\\\\!!!!!!!!!!!!!!////
\\\\\\!!!!!!!!!!//////
\\\\\\\\!!!!!!////////
\\\\\\\\\\!!//////////
for (j = 1; j <= i; j++ ){
    System.out.print("\\\\");
}
for (j = 1; j <= i; j++ ){
    System.out.print("//");
}

两个for循环都在如下所示的for循环中:

public static void main(String[] args) {
    //input should be customizable, like 4, 6, 8, 43 and so on
    int input = 4;
    for (int i = 0; i < input; i++){

        //left side slashes
        for (int j = 1; j <= i; j++ ){
            System.out.print("\\\\");
        }
        //Here is the problem. It almost works like supposed to, just a on Line 2 appears 1 "!!" to much, then on line 1 there is 2 "!!" too much.
        for (int k = input - i; k > 0; k--){
            for(int l = 0; l < k; l++){
                System.out.print("!!");
            }
        }

        //right side slashes 
        for (int j = 1; j <= i; j++ ){
            System.out.print("//");
        }
        //Line breaks
        System.out.println();
    }
}

共有1个答案

凤经武
2023-03-14

您可以使用类String的repeat方法来简化代码。那么这只是一个计算你需要多少字符的问题。

public class Pyramid {
    public static void main(String[] args) {
        int n = 6;
        if (args.length > 0) {
            n = Integer.parseInt(args[0]);
        }
        
        for (int i = 0; i < n; i++) {
            System.out.println("\\\\".repeat(i) + "!!".repeat(2 * (n - i) - 1) + "//".repeat(i));
        }
    }
}

java Pyramid

!!!!!!!!!!!!!!!!!!!!!!
\\!!!!!!!!!!!!!!!!!!//
\\\\!!!!!!!!!!!!!!////
\\\\\\!!!!!!!!!!//////
\\\\\\\\!!!!!!////////
\\\\\\\\\\!!//////////

当然,对于循环,您仍然可以用替换对repeat的调用,现在您应该看到问题了:中间的!!字符不需要两个嵌套循环。

public class Pyramid {
    public static void main(String[] args) {
        int n = 6;
        if (args.length > 0) {
            n = Integer.parseInt(args[0]);
        }
 
        for (int i = 0; i < n; i++) {

            // Left side slashes
            for (int j = 0; j < i; j++) {
                System.out.print("\\\\");
            }
            
            for (int j = 2 * (n - i) - 1; j > 0; j--) {
                System.out.print("!!");
            }

            // Right side slashes 
            for (int j = 0; j < i; j++) {
                System.out.print("//");
            }

            // Line break
            System.out.println();
        }
    }
}

 类似资料:
  • 问题内容: 我正在尝试从我的Pyramid应用程序流式传输服务器发送的事件,但是我无法从我的角度弄清楚如何流式传输响应正文。这是我正在使用的测试视图(它完全不实现SSE,仅用于计算流传输部分): 这产生 我尝试了一下,至少不会出错,但是它不会流式传输响应- 等待生成器完成后才将响应返回到我的浏览器。 我认识到,这可以简单地为每个请求返回一个事件,并允许客户端在每个事件后重新连接,但是我更喜欢通过从

  • 自从分布式版本库控制系统(Mercurial/Hg、Bazaar、Git等)诞生之后,有越来越多的开源项目迁移了版本控制系统,例如从Subversion或CVS迁移到分布式版本控制系统。因为众多的开源项目逐渐认识到,集中式的版本控制管理方式阻止了更多的人参与项目的开发,对项目的发展不利。 集中式版本控制系统的最大问题是,如果没有在服务器端授权,就无法提交,也就无法保存自己的更改。开源项目虽然允许所

  • 问题内容: 如何检查用户是否具有金字塔权限。例如,我只想在用户拥有一定权限但所有人都可以使用视图的情况下显示一些HTML。 问题答案: 通常的方法是: 另请参见http://docs.pylonsproject.org/projects/pyramid/1.0/narr/security.html#debugging- imperative-authorization- failures 和htt

  • 我实际上是在打印这个图案:https://imgur.com/a/ObixO5I 我得到的输出是:

  • 主要内容:金字塔向上,金字塔向下,均值移位滤镜金字塔是对图像的一种操作, 使用特定的平滑过滤器(例如高斯,拉普拉斯算子)对输入图像进行初始平滑,然后对平滑后的图像进行二次采样。 这个过程重复多次。 在金字塔操作期间,图像的平滑度增加并且分辨率(尺寸)减小。 金字塔向上 在金字塔上,图像最初被上采样然后模糊。可以使用类的方法对图像执行金字塔向上操作。 以下是这种方法的语法 - 该方法接受以下参数 - src - 表示此操作的源(输入图像)的对象

  • 目标 在这一章当中, 我们将学习图像金字塔 我们将使用图像金字塔来创建一个新的水果,“Orapple” <!--