我有一个分配来创建一个提示用户输入整数的程序,然后根据使用while循环的用户输入创建一个乘法表。
输出乘法表必须包含标题行和列。我所坚持的是如何创建标题行,因为标题必须计数的数字取决于用户输入。
我在while循环中创建了标题列,用于格式化行,因为每次循环执行时都会创建一个新行。但标题行只打印一次,因此我无法使用while循环格式化列来创建它。
如何创建标题行,以便将用户输入减少回1,并输出所有来自1,2,3,...,用户输入的整数值?
这就是我所拥有的:
import java.util.Scanner;
public class Multiplication
{
public static void main(String[] args)
{
int number;
String yesno = "Y";
Scanner keyboard = new Scanner(System.in);
System.out.print ("This program generates a multiplication table ");
System.out.println("based on a number you enter.");
while(yesno.equalsIgnoreCase("Y"))
{
System.out.println("Please enter a number.");
number = keyboard.nextInt();
int row = 1;
int column = 1;
System.out.println(" |" + MAKETHISWORK + "\t"); //THIS IS WHERE I'M STUCK.
System.out.println("--------------------");
while(number>0)
{
row = 1;
while(row <= number)
{
System.out.print(row + "|");
column = 1;
while(column <= number)
{
System.out.print(row*column + "\t");
column ++;
} //END WHILE COLUMN <= NUMBER
System.out.println();
row ++;
} //END WHILE ROW <=NUMBER
System.out.println();
while(number>0)
{
number--;
}
} //END WHILE NUMBER >0
System.out.println("Would you like to enter another number? (Y/N) ");
yesno = keyboard.nextLine();
yesno = keyboard.nextLine();
} //END WHILE YESNO IS Y
while(yesno.equalsIgnoreCase("N"))
{
System.out.println("Thanks for participating!");
break;
}
}
}
答案 0 :(得分:2)
为什么不使用另一个循环来为该值构建字符串?
StringBuilder builder = new StringBuilder();
for (int i = 1; i <= number; i++) {
builder.append(i).append(" ");
}
System.out.println(" |" + builder.toString() + "\t");
请注意,这将创建一个以空格分隔的数字字符串,直到输入数字。如果你想要一个不同的分隔符,只需附加一个不同的值。