Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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
Java 使用单个循环打印菱形数字?_Java_C_For Loop - Fatal编程技术网

Java 使用单个循环打印菱形数字?

Java 使用单个循环打印菱形数字?,java,c,for-loop,Java,C,For Loop,我说的是打印这个图案 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 使用多个for循环非常容易。但我试图用一个for循环来实现它,但没能做到。 可能吗 my code:- StringBuilder sb = new StringBuilder(); for (int i = 1; i <= 8; ++i) {

我说的是打印这个图案

       1
      121
     12321
    1234321
   123454321
  12345654321
 1234567654321
123456787654321
使用多个for循环非常容易。但我试图用一个for循环来实现它,但没能做到。 可能吗

my code:- 

    StringBuilder sb = new StringBuilder();
    for (int i = 1; i <= 8; ++i) {
    System.out.println(sb.append(i)
    + new StringBuilder(sb).reverse().substring(1));
我的代码:-
StringBuilder sb=新的StringBuilder();

对于(int i=1;i,这里有一种只使用一个循环写出此模式的方法:

class RhombusNumbers{

    public static void main(String[] args){
        String left = "";
        int max = 8;
        for(int i = 1; i <= max; i++){
            System.out.println(left + i + new StringBuilder(left).reverse().toString());
            left+=i;
        }
    }

}
类菱形{
公共静态void main(字符串[]args){
字符串左=”;
int max=8;

对于(int i=1;i,您可以使用递归来解决它:

class Rhombus {
  public static void left(int x) {
    if (--x > 0) {
      left(x);
      System.out.print(x);
    }
  }

  public static void right(int x) {
    if (--x > 0) {
      System.out.print(x)
      right(x);
    }
  }

  public static void main(String[] args) {
    for (int i = 1; i <= 3; i++) {
      left(i);
      System.out.print(i);
      right(i);
      System.out.println();
    }
  }
}
菱形类{
左公共静态无效(int x){
如果(--x>0){
左(x);
系统输出打印(x);
}
}
公共静态无效权(int x){
如果(--x>0){
系统输出打印(x)
右(x);
}
}
公共静态void main(字符串[]args){
对于(inti=1;i,使用以下事实:

1*1 = 1
11*11 = 121
111*111= 12321 
 ....
您可以这样做:

public static void main(String[] args) { 
    int j = 0;
    for(long i = 1 ; i<1000000000; i = i+(long)Math.pow(10, j)){
        System.out.println(i*i);
        j++;
    }
}
publicstaticvoidmain(字符串[]args){
int j=0;
(长i=1;i试试这个

StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 8; ++i) {
    System.out.println(sb.append(i)
        + new StringBuilder(sb).reverse().substring(1));
}
StringBuilder sb=新建StringBuilder();
对于(inti=1;i,类似于C

#include <stdio.h>

int main(void){
    for(int i = 1, n = 1, d = 1; n <= 8; i += d){
        if(i == n){
            d = -d;
        } else if(i == 0){
            d = -d;
            ++n;
            puts("");
            continue;
        }
        printf("%d", i);
    }
}
#包括
内部主(空){

对于(int i=1,n=1,d=1;n我们真的很想看到,你迄今为止尝试了什么是的,一个线索:递归性。比如为什么这个问题被否决了?我知道他没有提供代码之类的,但我觉得这是一个完全有效的问题,可能会帮助其他人。你想要n=10的输出是什么?
reverse()
函数本身在内部使用循环,这样更好:-D@Andremoniy修正:pTotally忘记了这是一件事:pOr
for(long i=1;它在Andremoniy对我的答案StringBuilder.reverse()的前9个数字发表评论后产生“错误”结果使用一个循环。因此这是两个循环。字符串连接也使用
memcopy
形式的循环,因此我不认为这是相关的。这个问题本质上是O(N^2),所以不能用长度为N的单个循环来解决-在这种情况下,总是有一个隐藏循环。
#include <stdio.h>

int main(void){
    for(int i = 1, n = 1, d = 1; n <= 8; i += d){
        if(i == n){
            d = -d;
        } else if(i == 0){
            d = -d;
            ++n;
            puts("");
            continue;
        }
        printf("%d", i);
    }
}