将根据用户输入以梯形式打印的Java程序

时间:2015-08-04 16:54:05

标签: java algorithm

我是Java编程的初学者,我想根据用户输入打印字符,但是我没有得到正确的输出。

    char any;
    double b;
    double c;
    double n;

    System.out.print("Input character(s): ");
    any = kets.next().charAt(0);
    System.out.print("Input range: ");
    n = Integer.parseInt(reader.readLine());

    for(b=1; b<=n; b++)
    {
        for(c=1; c<=b; c++)
        {
            System.out.print(any);

        }
        System.out.println();
        }
    }
}

我得到的输出:

Input character(s): JSP
Input range: 5
J
JJ
JJJ
JJJJ
JJJJJ

输出应该是:

Input character(s): JSP
Input range: 5
JSP
JSP JSP
JSP JSP JSP
JSP JSP JSP JSP
JSP JSP JSP JSP JSP

2 个答案:

答案 0 :(得分:1)

因为any = kets.next().charAt(0);

这一行将return character位于下一个标记的第0位

因此对于输入字符串&#34; JSP&#34;。 - `kets.next()。charAt(0);&#39;将返回: J

如果您想要整个token,请使用String any = kets.next();

希望你的怀疑是明确的。

答案 1 :(得分:0)

您必须使用字符串来存储输入,而不是char。您当前的代码看起来存储用户条目的第一个字母:.charAt(0);您可以找到文档here

char一次只能存储一个字符,而字符串可以容纳更多(最多2,147,483,647个字符,也读为2 ^ 31 -1)

String any; //Change any from type char to String
double b;
double c;
double n;

System.out.print("Input character(s): ");
any = kets.next(); 
//Retrieve just the next() String..no need to delve deeper for a character.
System.out.print("Input range: ");
n = Integer.parseInt(reader.readLine());

for(b=1; b<=n; b++)
{
    for(c=1; c<=b; c++)
    {
        System.out.print(any);
    }
    System.out.println();
}