基本上,我正在尝试使程序接受1到10之间的整数以及字母字符。然后,它根据此值作为最大宽度输出适当的模式
例如,用户输入一个整数 5 和一个字母 X,程序打印出来:
x
xx
三十
三xxx
三xxxx
我似乎无法让它打印出任何东西,以下是我到目前为止所拥有的......任何提示都非常感谢!
import java.util.*;
public class pattern {
public static void main(String[] args) {
int New1 = 1, Linecounter = 1;
Scanner sc = new Scanner(System.in);
int Number = sc.nextInt();
if (Number >= 1 && Number <= 10) {
Number = New1;
}
else{
System.out.println("Error: Enter a number between 1 and 10");
}
Scanner keyboard = new Scanner(System.in);
char letter = keyboard.next().charAt(0);
for (New1 = 1; New1 <= 10; New1++) {
for (letter = (char) Linecounter; letter <= 10; letter++) {
System.out.print("" +letter+ "");
}
System.out.println();
}}}
首先:
if (Number >= 1 && Number <= 10) {
Number = New1;
}
集合数 = 1。 执行此代码后,Number 和 New1 都等于 1。 您想要将数字设置为输入的内容。 现在循环需要工作。 你应该有这样的东西:
for (int i = 1; i <= Number; i++) { //1 through Number
for (int j = 1; j <= i; j++) {
System.out.print(letter); //Print letter i times
}
System.out.print("n"); //New line
}
是这样的东西,你正在寻找吗?
int x = 5;
char letter = 'x';
for (int i = 0; i <= x; i++)
{
for (int j = 0; j < i; j++)
{
System.out.print(letter);
}
System.out.println();
}
以上输出
x
xx
xxx
xxxx
xxxxx
这似乎是家庭作业,所以我只给你带来伪代码。这个想法是做这样的事情:
for i in 1..x do
for j in 1..i do
print ('*')
end
println (''
end
(事实上,如果您更改puts
的println
,这将成为一个有效的 Ruby 脚本)。
无论如何,这里的关键是:您需要与用户输入的行一样多的星号。只要您在内部循环中打印星号而不打印换行符,并在外部循环中调用println
,就可以了。同样重要的是,向上迭代到外部循环中的所需值,但只能迭代到内部循环中的New1
变量。
试试这个:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Integer: ");
int userInt = scan.nextInt();
System.out.print("Letter: ");
String userLetter = scan.next();
String letter = "";
for (int i = 0; i <= userInt; i++) {
System.out.println(letter);
letter += userLetter;
}
}
这不会将输入限制在 1-10 之间,您可以为此添加一点if
语句。