如何在java中只用一个for循环打印以下输出?
1 2 3 4 5 6 7 8 9 1 0 9 8 7 6 5 4 3 2 1
代码段:
class Series{
public static void main(String args[]){
for(int i=1; i<=10; i++){
System.out.println(i);
}
System.out.println(i);
for(int j=9; j>=0; j--){
System.out.println(j);
}
}
我的节目以下列方式进行。任何人都可以纠正吗?
答案 0 :(得分:11)
public static void main(String...strings ){
int dir = 1;
for(int i=1; i>0; i+=dir){
if(i == 10)
dir = -1;
System.out.print(i+" ");
}
}
<强>输出:强>
1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1
答案 1 :(得分:2)
问题中的系列是错误的。
应该是:1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1
代码在一个循环中如下:
int ctr = 1;
for(int i = 1; i > 0; i += ctr)
{
if(i == 10)
{
ctr = -1;
}
System.out.print(i + " ");
}
答案 2 :(得分:1)
每个序列都遵循一个模式,让我们尝试在此中找到一个。
要使用此代码,请分析使用变量打印的循环增量以及输出中需要的内容?
在您的问题中,假设您输入的号码是由用户输入的,即 n ,您需要序列中的2 * n - 1个数字。因此,我们现在有了循环的限制
对于n = 5,在无条件下,循环只会打印一个这样的序列
1 2 3 4 5 6 7 8 9 如果您从1开始循环。
您想要的序列是 1 2 3 4 5 4 3 2 1 。
现在看两个序列,你可以看到序列是相同的,直到达到n值的中点。现在如果你进一步观察模式,如果你从6中减去 2,你得到4 ,这就是你想要的数字。类似地,当您从7中减去4时,您得到3 ,这是您所需序列中的下一个数字。
因此,该序列遵循的模式是,在循环达到用户提供的值之后,您需要从下一个数字中减去(2 * k),其中 k从1开始并随着每次迭代而增加
现在你知道如何使用条件语句来实现易于实现的模式。
PS:让我们假设使用无条件语句的附加约束,然后我们必须编写一个算术表达式来解决我们的问题。
再次按照模式,表达式必须显示 i ,其中i是循环中递增的变量
所以我们的代码看起来像
for (i = 1; i<=2*n - 1;i++)
{
System.out.print(i);
}
现在要获得模式,我们需要在用户提供整数 n 后减去2的倍数。但无论我们减去什么,也不应该影响前n个整数。
由于我们知道我们必须减去2的倍数,我们知道我们必须减去的表达式看起来像 2 *(____)。由于我们需要一系列倍数,我们可以使用%获得。一旦数字越过n,i上的%运算符就会返回从0到n-1的序列,因此生成2的倍数。
现在我们的表达式来自 2 *(i%n)。但问题是它也会减去我们不想要的前4个整数,因此我们必须进行更改,这样只有在循环达到用户提供的值后,此表达式才会起作用。
我们知道除法 / 运算符为我们提供了商。因此,当我们运行循环直到2 * n -1时,它将产生0,直到我们达到用户定义的数值和1为剩余的序列。因此,将此表达式乘以我们之前的表达式会产生 2 *(i%n)*(i / n)
我们有了它,我们生成序列的最终代码将是
for (int i = 1;i<2*r;i++)
{
System.out.print(i - 2 * (i%r)*(i/r));
}
观察上面的代码,对于前n-1个整数,i / r将减去表达式0,对于i = n, i%r 将使表达式为0.对于序列的其余部分 i / r 会产生值1,因此我们会从 2 *(i%r)获得2的倍数,以便为我们提供序列
答案 3 :(得分:0)
试试这个
int j = 10;
for (int i = 1; i <= 10; i++) {
if(i<10)
System.out.print(" " +i);
if(i==10){
i--;
System.out.print(" " +j);
if(j==1){
i++;
}
j--;
}
}
<强>输出强>
1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1
答案 4 :(得分:0)
这样的东西?
for(int i=0;i<20;i++) {
if((i/10)%2 == 0)
System.out.print(i%10 + " ");
else
System.out.print((10-(i%10)) + " ");
}
答案 5 :(得分:0)
试试这段代码,你只需要在for循环中使用if条件。
int i = 1;
for(int j=1; j<=20; j++)
{
if(j<11)
System.out.print(j+" ");
else
{
System.out.print((j - i == 10 ?" ": (j-i + " ")));
i = i+2;
}
}
答案 6 :(得分:-2)
public class forLoopTest {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
System.out.print(i + " ");
}
for (int j = 10; j >= 1; j--) {
System.out.print(j + " ");
}
}
}