Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String - Fatal编程技术网

Java 以金字塔形式打印字符串

Java 以金字塔形式打印字符串,java,string,Java,String,我喜欢打印一个字符串,该字符串是用户以金字塔形式逐字输入的。 例如,当用户以“字符串”形式输入时,输出应为: s s t s t r s t r i s t r i n s t r i n g 我试过一个小程序,但它不会以金字塔的形式排列单词。节目是 import java.io.*; import java.util.Scanner; import java.lang.String; public class Mainer {

我喜欢打印一个字符串,该字符串是用户以金字塔形式逐字输入的。 例如,当用户以“字符串”形式输入时,输出应为:

     s
    s t
   s t r
  s t r i
 s t r i n
s t r i n g
我试过一个小程序,但它不会以金字塔的形式排列单词。节目是

    import java.io.*;
    import java.util.Scanner;
    import java.lang.String;

    public class Mainer {
    public static void main(String args[]){
       try
       {
           Scanner sc = new Scanner(System.in);
           String s;
           int l;
           System.out.println("Enter the String : ");
           s = sc.nextLine();
           l = s.length();
           for(int i=0; i<l;i++)
           {

               for(int j=0;j<i;j++)
               {
                   System.out.printf("%c ",s.charAt(j));
               }
               System.out.printf("%c\n",s.charAt(i));
           }         

       }
       catch(Exception e)
       {
           System.err.println(e);
       }
    }
}

你能把它安排成第一个例子吗?

只需编写另一个for循环来打印空格

for(int i=0; i<l;i++)
{

    for(int j=0; j<l-(i+1); j++)
    {
        System.out.print(" ");
    }

    for(int j=0;j<i;j++)
    {
        System.out.printf("%c ",s.charAt(j));
    }
    System.out.printf("%c\n",s.charAt(i));
}  

for(int i=0;i因此,您的程序需要做的是用空格填充文本。在第一个示例中,您的第一个输出实际上是一个字母,但与最后一个输出的中间字母处于相同的位置

因此,伪代码中的第一个输出类似于:

String padding = (text.length/2) number of spaces;
// The padding on the left.
Print padding
// The letter to print.
Print first letter

请记住,填充的长度将随着您在该迭代中输出的文本的长度而变化。但我不打算告诉您。这会破坏所有的乐趣:)

这应该可以做到

import java.io.*;
import java.util.Scanner;
import java.lang.String;

public class Mainer {
public static void main(String args[]){
   try
   {
       Scanner sc = new Scanner(System.in);
       String s;
       int l;
       System.out.println("Enter the String : ");
       s = sc.nextLine();
       l = s.length();
       for(int i=0; i<l;i++)
       {
           int padding = s.length() - i;
           if (padding> 0) {
               System.out.printf("%" + padding + "s", " ");
           }
           for(int j=0;j<i;j++)
           {
               System.out.printf("%c ",s.charAt(j));
           }
           System.out.printf("%c\n",s.charAt(i));
       }         

   }
   catch(Exception e)
   {
       System.err.println(e);
   }
}
}
import java.io.*;
导入java.util.Scanner;
导入java.lang.String;
公共类维护器{
公共静态void main(字符串参数[]){
尝试
{
扫描仪sc=新的扫描仪(System.in);
字符串s;
int l;
System.out.println(“输入字符串:”);
s=sc.nextLine();
l=s.长度();
对于(int i=0;i 0){
System.out.printf(“%”+padding+s“,”);
}

对于(int j=0;j,在输出字符串之前,需要将字符串长度的一半作为字符串前面的空格数(填充)相加。但在每次迭代时减去1个空格以创建形状

或者,另一种说法是,您得到原始字符串的长度,并打印出未打印字符的空格数

for(int x = 0; x < l - i; x++) {
    System.out.print(" ");          
}
for(int x=0;x
这是作弊吗?(只有一个循环)

输出:

     s
    s t
   s t r
  s t r i
 s t r i n
s t r i n g

是的,我们可以,但那是你的工作。你没有在任何地方打印空格,这就是为什么你应该在开始打印字符之前打印空格。我一路嗅到了挪威的家庭作业。不管是家庭作业,这是一个有趣的问题。+1IMHO在这种情况下,如果没有代码,你的答案会更好,因为OP是自己计算的配偶。@Pshemo你害怕OP在没有摸索的情况下合并我发布的代码吗?我想OP可能看到了循环如何工作的示例。他现在需要做的就是尝试找出如何使用它们来解决不同类型的问题。给他鱼(代码)而不是棒(好的一般建议)从长远来看,这对他没有什么帮助。顺便说一句,很抱歉重播太晚了,我不经常用英语:)。这看起来很复杂!@Gowtham不,不是。而且很短。(只有一个循环):)
String s = "string";
        int len = s.length();           
        String tmp = "";
        for (char c : s.toCharArray()) {
            tmp += tmp.length() > 0 ? " " + String.valueOf(c) : String.valueOf(c);
            System.out.printf("%" + (len + tmp.length() - 1) + "s\n", tmp);
            len--;
        }
     s
    s t
   s t r
  s t r i
 s t r i n
s t r i n g