【问题标题】:Output is not printing as expected输出未按预期打印
【发布时间】:2012-11-22 21:33:22
【问题描述】:

我已经完成了这个任务的代码,只是无法弄清楚是什么导致输出不正确。当使用 3 和 A 作为值时,所需的输出应该返回:

一个

AA

AAA

目前,我得到:

AAA

AAA

AAA

代码:

import static java.lang.System.*;

public class TriangleThree
{
private int size;
private String letter;

public TriangleThree()
{
}

public TriangleThree(int count, String let)
{
    size = count;
    letter = let;
}

public void setTriangle( String let, int sz )
{
    size = sz;
    letter = let;
}

public String getLetter()
{
    return letter;
}

public String toString()
{
    String output="";
    for(int i = 1; i<=size; i++)
    {
        for(int j = 0; j > i;j++ )
        {
            output = output + " ";
        }
        
        for(int k = size; k>0; k--)
        {
            output = output + letter;
        }
        output= output + "\n";
    }
        
    
    
    
    
    return output+"\n";
}
}

并与我的跑步者类交叉引用它:

import static java.lang.System.*;

import java.util.Scanner;

public class Lab11c
{
public static void main( String args[] )
{
   Scanner keyboard = new Scanner(System.in);
    String choice="";
        do{
            out.print("Enter the size of the triangle : ");
            int big = keyboard.nextInt();
            out.print("Enter a letter : ");
            String value = keyboard.next();

                //instantiate a TriangleThree object
         TriangleThree tt = new TriangleThree( big, value );
            //call the toString method to print the triangle
            System.out.println( tt );

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

【问题讨论】:

    标签: java loops for-loop nested-loops


    【解决方案1】:

    您正在运行您的第二个 for 循环 3 次(全部从 size 到 0)。将其更改为:-

        for(int k = i; k>0; k--)
        {
            output = output + letter;
        }
    

    这将为i = 1 运行1 time,为i = 2 运行2 times,...

    另外,你的第一个循环有问题:-

    for(int j = 0; j > i;j++ )
    

    这应该是:-

    for(int j = 0; j < i;j++ )
    

    更新:-

    实际上你不需要你的第一个循环,因为它只是打印空间。而是仅在第二个循环中为您的 output 添加空格:-

        for(int k = i; k>0; k--)
        {
            output = output + letter + " ";
        }
    

    【讨论】:

    • 所以不妨试试for(int k = 0; k &lt;= size; k++) { output = output + letter; }
    • @tech_geek23.. 是的,这也可以。不会有太大的不同。
    • 好的,你重写的代码似乎在起作用,我仍然得到 3 个 A,在这种情况下,在空格后面的每一行上
    • 我还是这样 > A > AA > AAA 它需要更像:> A > AA >AAA
    • @tech_geek23.. 无法理解。你现在得到什么输出?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多