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