0

对于我目前正在研究的实验室,它可以帮助我:

output = ""
output += word

loop i that runs 
{
output += word.charAt(i)

loop j
{    
  output += " "

}

output += word.charAt( ______ )+ "\n"
}

StringBuffer sb = new StringBuffer(word);

output += word backwards

这是我现在的代码:

import static java.lang.System.*;

class BoxWord
{
 private String word;

public BoxWord()
{
    word="";
}

public BoxWord(String s)
{
    word = s;
}

public void setWord(String w)
{
    word = w;
}

public String toString()
{
    String output="";
    output += word + "\n";
    for(int i =1; i<word.length(); i++)
    {
        output += word.charAt(i);
        for(int j =i+1; j<word.length()-i; j++)
        {
            output += " ";
        }
        output += word.charAt((word.length()-i)) + "\n";
    }
    StringBuffer sb = new StringBuffer(word);
    output += sb;
            
    return output+"\n";
}
}

这是我用于交叉引用的跑步者类:

import static java.lang.System.*;

import java.util.Scanner;

public class Lab11f
{
 public static void main( String args[] )
   {
   Scanner keyboard = new Scanner(System.in);
    String choice="";
        do{
            out.print("Enter the word for the box : ");
            String value = keyboard.next();
            

                //instantiate a BoxWord object
         BoxWord bw = new BoxWord(value );
            //call the toString method to print the triangle
            System.out.println( bw );

            System.out.print("Do you want to enter more data? ");
            choice=keyboard.next();
        }while(choice.equals("Y")||choice.equals("y"));
}
}

目前它的输出是这样的:

正方形

q

你的

情商

正方形

当它需要是这样的:

正方形

Q>>>>R

你>>>>一个

一个>>>>U

右>>>>问

ERAUQS(其中“>”表示空格,最后一列应对齐)

这是实验室表的 google 文档版本的链接:https ://docs.google.com/open?id=0B_ifaCiEZgtcVTAtT2t0ajRPLUE

更新

好的,这在大多数情况下都有效。我现在得到这个:

正方形

q>>>>e

你>>>>r

一个>>>>一个

r>>>>u

e>>>>q

正方形

更新#2 现在我的结果是这样的:

正方形

q>>>>e

你>>>>r

一个>>>>一个

r>>>>u

时代

4

1 回答 1

0

您的问题在第二个循环中。您想添加等于word.length - 2.

for(int j = 0; j < word.length()-2; j++)
{
     output += " ";
}

代替

for(int j =i+1; j<word.length()-i; j++)
{
     output += " ";
}

编辑:
没有看到你得到了太多。并且底部正方形没有反转。

for(int i =1; i<word.length()-1; i++) // -1 so the last letter is not added
{
    output += word.charAt(i);
    for(int j =i+1; j<word.length()-i; j++)
    {
        output += " ";
    }
    output += word.charAt((word.length()-i-1)) + "\n";
}

要反转字符串,您必须使用StringBuffer.reverse()

output += sb.reverse();
于 2012-11-24T00:55:30.383 回答