嵌套循环未正确输出

时间:2012-11-24 00:30:34

标签: java loops nested-loops

对于我正在研究的实验室,它给了我这个帮助:

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 e

     

你好

     

AA

     

RU

     

当量

     

当它需要像这样:

  

SQUARE

     

Q&GT;&GT;&GT;&GT; R

     

U&GT;&GT;&GT;&gt;一种

     

A&GT;&GT;&GT;&GT;û

     

R&GT;&GT;&GT;&GT; Q

     

ERAUQS   (其中“&gt;”表示空格,最后一列应对齐btw)

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

更新

好的,这大部分都有效。我现在收到这个:

  

     

Q&GT;&GT;&GT;&GT,E

     

U&GT;&GT;&GT;&GT; R

     

A&GT;&GT;&GT;&gt;一种

     

R&GT;&GT;&GT;&GT;û

     

e取代;&GT;&GT;&GT; Q

     

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

  

     

Q&GT;&GT;&GT;&GT,E

     

U&GT;&GT;&GT;&GT; R

     

A&GT;&GT;&GT;&gt;一种

     

R&GT;&GT;&GT;&GT;û

     

erauqs

1 个答案:

答案 0 :(得分: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();