我是java的新手,我有一个程序,它从用户那里获取一个1到10之间的数字,并显示该数字的乘法表。这是代码:
import java.util.Scanner; //importing the scanner library
public class question3 {
public static void main(String[] args){
Scanner keyb = new Scanner(System.in);
System.out.print("Enter an integer between 1 and 10: ");
int userNumber = keyb.nextInt();
while (userNumber <= 0 || userNumber >= 10){
System.out.print("Enter an integer between 1 and 10: ");
userNumber = keyb.nextInt();
}
keyb.close();
for (int counter = 1; counter <= userNumber; counter++){
System.out.print(counter + "t");
for (int number = 2; number <= userNumber; number++){
System.out.print((counter * number) + "t");
}
System.out.println(" ");
}
}
}
因此,如果用户输入 4,输出将如下所示:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
这行得通。我需要使用乘法表并删除任何重复的数字。因此,如果用户输入 4,所需的输出将如下所示:
1 2 3 4
4 6 8
9 12
16
当重复输出仅存在于 for 循环打印语句中时,如何删除它?
谢谢!
Set<Integer> generatedNumbers = new HashSet<>();
for(int counter = 1; counter <= userNumber; counter+=1)
{
System.out.print((generatedNumbers.contains(counter) ? "" : counter) + "t");
generatedNumbers.add(counter);
for(int number = 2; number <= userNumber; number+=1)
{
int product = number * counter;
System.out.print((generatedNumbers.contains(product) ? "" : product) + "t");
generatedNumbers.add(product);
}
System.out.println();
}
您需要一个额外的List<Integer>
来检查条件:(只需要对齐空格(DIY))
public class question3 {
public static void main(String[] args) {
Scanner keyb = new Scanner(System.in);
System.out.print("Enter an integer between 1 and 10: ");
int userNumber = keyb.nextInt();
while (userNumber <= 0 || userNumber >= 10) {
System.out.print("Enter an integer between 1 and 10: ");
userNumber = keyb.nextInt();
}
keyb.close();
List<Integer> arr = new ArrayList<Integer>();
for (int counter = 1; counter <= userNumber; counter++) {
if (!arr.contains(counter)) {
System.out.print(counter + "t");
arr.add(counter);
} else
System.out.println("t");
for (int number = 2; number <= userNumber; number++) {
if (!arr.contains((counter * number))) {
System.out.print((counter * number) + "t");
arr.add((counter * number));
} else {
System.out.print("t");
}
}
System.out.println("t");
}
}
}
编辑:还要在这里利用do-while
循环来避免重复的代码来询问输入,例如
System.out.print("Enter an integer between 1 and 10: ");
int userNumber = keyb.nextInt();