我的编程课有这个问题,我无法正确...输出必须是所有奇数,每行奇数,直到每行的数字数量满足作为输入的奇数输入。例如:
输入:5
正确的输出:
1
3 5 7
9 11 13 15 17
如果输入的数字是偶数或负数,则用户应输入不同的数字。这就是我到目前为止所做的:
public static void firstNum() {
Scanner kb = new Scanner(System.in);
int num = kb.nextInt();
if (num % 2 == 0 || num < 0)
firstNum();
if (num % 2 == 1)
for (int i = 0; i < num; i++) {
int odd = 1;
String a = "";
for (int j = 1; j <= num; j++) {
a = odd + " ";
odd += 2;
System.out.print(a);
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
firstNum();
}
输入(3)的输出是
1 3 5
1 3 5
1 3 5
什么时候应该
1
3 5 7
任何人都可以帮助我吗?
答案 0 :(得分:1)
试试这个:
public static void firstNum() {
Scanner kb = new Scanner(System.in);
int num = kb.nextInt();
while (num % 2 == 0 || num < 0) {
num = kb.nextInt();
}
int odd = 1;
for (int i = 1; i <= num; i += 2) {
String a = "";
for (int j = 1; j <= i; j++) {
a = odd + " ";
odd += 2;
System.out.print(a);
}
System.out.println();
}
}
答案 1 :(得分:0)
WSResponse
你应该在for循环前指定奇数。 在内部循环中将j和奇数一起比较。
答案 2 :(得分:0)
好像我发帖有点迟了,这是我的解决方案:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the odd number: ");
int num = scanner.nextInt();
if (num % 2 == 0 || num < 0) {
firstNum();
}
if (num % 2 == 1) {
int disNum = 1;
for (int i = 1; i <= num; i += 2) {
for (int k = 1; k <= i; k++, disNum += 2) {
System.out.print(disNum + " ");
}
System.out.println();
}
}
}
答案 3 :(得分:0)
对于这样的问题,通常不需要使用条件语句。你的学校可能也不希望你也使用String。你可以控制一对循环中的所有东西。
这是我的解决方案:
int size = 7; //size is taken from user's input
int val = 1;
int row = (size/2)+1;
for(int x=0; x<=row; x++){
for(int y=0; y<(x*2)+1; y++){
System.out.print(val + " ");
val += 2;
}
System.out.println("");
}
我遗漏了你需要检查输入是否为奇数的部分。
int row = (size/2)+1;
->
打印1列->
打印3列->
打印5列->
打印7列,依此类推我们发现 行 与 列 之间的关系实际上是:
column = (row * 2) + 1
因此,我们有:y<(x*2)+1
作为内循环的控件。
val
开始,每次增加val
为2,以确保只打印奇数。
(val += 2;
)测试运行:
1
3 5 7
9 11 13 15 17
19 21 23 25 27 29 31
33 35 37 39 41 43 45 47 49
答案 4 :(得分:0)
您可以使用两个嵌套循环(或流),如下所示:通过具有奇数个元素的行的外循环和通过这些行的元素的内循环。内部动作是依次打印和增加一个值。
int n = 9;
int val = 1;
// iterate over the rows with an odd
// number of elements: 1, 3, 5...
for (int i = 1; i <= n; i += 2) {
// iterate over the elements of the row
for (int j = 0; j < i; j++) {
// print the current value
System.out.print(val + " ");
// and increase it
val += 2;
}
// new line
System.out.println();
}
int n = 9;
AtomicInteger val = new AtomicInteger(1);
// iterate over the rows with an odd
// number of elements: 1, 3, 5...
IntStream.iterate(1, i -> i <= n, i -> i + 2)
// iterate over the elements of the row
.peek(i -> IntStream.range(0, i)
// print the current value and increase it
.forEach(j -> System.out.print(val.getAndAdd(2) + " ")))
// new line
.forEach(i -> System.out.println());
输出:
1
3 5 7
9 11 13 15 17
19 21 23 25 27 29 31
33 35 37 39 41 43 45 47 49
另见:How do I create a matrix with user-defined dimensions and populate it with increasing values?