我是Java初学者,请多多包涵。 :)我还没有学过if
语句之类的东西,但到目前为止,我仅了解循环,变量和类。我需要编写一个产生以下输出的循环:
10 0 9 1 8 2 7 3 6 4 5 5
我从该段中看到,数字之间的差减少了一个,因此从10减到0减去10,然后从0减到9加上9,然后在加法和减法之间交替进行减去。
我的想法是创建一个循环,其中我的变量i = 10
在循环(i--
中减小1,但是我不确定如何在变量之间进行加减运算循环?
public class Exercise7 {
public static void main(String[] args) {
for(int i = 10; i >= 0; i--) {
System.out.print(i + " ");
}
}
}
答案 0 :(得分:22)
为什么没有两个额外的变量,而又增加一个而又减少另一个:
int y = 0;
int z = 10;
for(int i = 10; i >= 5; i--) {
System.out.print(z + " " + y + " ");
y++;
z--;
}
输出:
10 0 9 1 8 2 7 3 6 4 5 5
但是,我们也可以在没有额外变量的情况下执行此操作:
for(int i = 10; i >= 5; i--) {
System.out.print(i + " " + 10-i + " ");
}
答案 1 :(得分:19)
我不认为OP确实希望有人为他们做功课,所以我要坚持回答他们实际提出的问题:如何在循环中的两个操作之间交替 (这样他们就可以保留:)
提出的算法)。
在大多数编程语言中,当我们想做每一次其他迭代时,通常会使用一个很漂亮的“技巧”。您肯定会在生活中遇到它,如果您不知道发生了什么,它可能会令人困惑,所以就去了!
取模(%
)运算符将产生其操作数之间除法的余数。
例如,考虑以下因素:7 ÷ 2 = 3.5
处理整数时,您会说7 ÷ 2 = 3
,然后剩下1
。
在这种情况下,当所有变量均为int
时,在Java中,7 / 2
为3
,而7 % 2
为1
。
这对您来说是取模!
关于此运算符的有趣之处通常是除法有趣的内容,尤其是一种情况:除以2
的余数始终是0
或1
。 ..并且它替代!这是这里的关键词。
在迭代中交替进行操作的“技巧”(实际上不是技巧,基本上是一种模式,考虑到它的使用范围):
2
的余数0
,请执行某些操作,否则(将是1
),请选择替代路径!在您的情况下,要回答您的实际问题(尽管其他人确实有很好的要点,但我并不是想从别人那儿取走),您可以考虑使用类似的方法:>
if( i % 2 == 0 ) {
// i is even, subtract
} else {
// i is odd, add
}
这将使您继续使用最初想到的算法!
答案 2 :(得分:6)
public class exercise7 {
public static void main(String[] args) {
for(int i = 10; i >= 5; i--) {
System.out.print(i + " " + (10-i) + " ");
}
}
}
答案 3 :(得分:5)
或者,如果您想成为一个明智的人,也可以用这种方式来做;)
for(int i = 0, arr[] = {10,0,9,1,8,2,7,3,6,4,5,5}; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
答案 4 :(得分:5)
将i >= 0
替换为i >= 5
添加此内容:System.out.print((10-i--) + " ");
从您所做的事情开始
public class Exercise7 {
public static void main(String[] args) {
for(int i = 10; i >= 5; ) {
System.out.print(i + " " + (10-i--) + " ");
}
}
}
答案 5 :(得分:5)
有些事情不需要思考:
public class Answer2 {
public static void main(String[] args) {
for (int i = 0; i <= 5; i++){
System.out.println(i);
System.out.println(10 - i);
}
}
}
修改
您可以并且应该概括您的任务。这是一个示例,您可以如何做(我不会编写该方法,因为这是您的工作-相反,我将更改答案只是为了向您展示可能性)
public class Answer2 {
private static final Random RANDOM = new Random();
public static void main(String[] args) {
//You can use any upper bound for 'someLength'
int someLength = 1 + RANDOM.nextInt(20);
for (int i = 0; i <= someLength / 2; i++) {
System.out.println(someLength - i);
System.out.println(i);
}
}
}
答案 6 :(得分:5)
这看起来有点像作业,所以我不会给你工作代码。
但是请记住,您可以在for循环中放置多个print语句。您不一定必须迭代10次才能获得输出。 5次就足够了。就像上面的评论中已经提到的:对于i的正确范围,数字在i和10-i之间交替。
答案 7 :(得分:4)
谁说您在循环中只能使用一个System.out.print
?
for (int i=0; i < 5; i++) {
System.out.print((10 - i) + " " + (i + 1) + " ");
}
答案 8 :(得分:4)
您应该考虑对系列进行概括。如您所见,该系列在加法和减法之间交替。而且,差异在每一步下降了一个。您可以为这两个定义变量并在循环中对其进行调整。
public static void main(String[] args) {
int term = 10;
int sign = 1;
for(int delta = 10; delta >= -1; delta--) {
System.out.print(term + " ");
sign = -1 * sign;
term = term + sign * delta;
}
}
答案 9 :(得分:1)
我尝试了这段代码。它对我有用。
for(int i = 10; i >= 5; i--) {
System.out.print(i + " ");
System.out.print(10-i + " ");
}
答案 10 :(得分:1)
只需从0或10开始运行循环。
1。 如果您从10开始
for(int i=10;i>=5;i--){
System.out.print(i + " " + (10-i) + " ");
}
2。 如果从0开始
for(int i=0;i<=5;i++){
System.out.print((10-i) + " " + i + " ");
}
输出将是: 10 0 9 1 8 2 7 3 6 4 5 5
答案 11 :(得分:0)
这是这里。输出列表是一个组成10的组合的列表。 10 0 9 1 8 2 7 3 6 4 5 5
10 + 0 = 10
9 +1 = 10
8 + 2 = 10
7 + 3 = 10
6 + 4 = 10
5 + 5 = 10
int n = 10;
int half = n / 2;
if(n % 2 == 1){
half++;
}
for(int x = n; x >= half;x--){
int remainder = n % x;
if(remainder == 0){
remainder = n - x;
}
System.out.print(x);
System.out.print(" ");
System.out.println(remainder);
}