[英]Can't figure out For Loop
我最近开始使用java,所以不幸的是我很糟糕。 我有一个关于我今天在课堂上提出的for循环问题的问题,但我无法弄清楚它的一部分。 我们应该打印出来:
__1__
_333_
55555
仅用于循环。
我已经启动了代码,但无法弄清楚如何打印数字,虽然我想出了空格。
public class Question{
public static void main(String [] args){
for(int j=1; j<=3;j++){
for(int i=1; i<=3-j; i++){
System.out.print(" ");
}
for(int k=?; k<=?; k??){
System.out.print(???);
}
for(int m=1; m<=3-j; m++){
System.out.print(" ");
}
System.out.println();
}
问号是我不知道那里发生了什么的地方。 谢谢。
你可以这样做,
class Main {
public static void main(String[] args) {
int i, j, k;
for (i = 1; i <= 3; i++) {
for (j = 2; j >= i; j--) {
System.out.print("_");
}
for (k = 1; k <= (2 * i - 1); k++) {
System.out.print(i * 2 - 1);
}
for (j = 2; j >= i; j--) {
System.out.print("_");
}
System.out.println();
}
}
}
第一个for循环将在数字前打印_
,第二个将打印数字,第三个将在数字后打印_
每次j
递增时,值都会变为2,这将导致公式1 + (2 * (j - 1))
,这就是完成循环的方法。 喜欢,
for (int j = 1; j <= 3; j++) {
for (int i = 1; i <= 3 - j; i++) {
System.out.print(" ");
}
int n = 1 + (2 * (j - 1));
for (int k = 1; k <= n; k++) {
System.out.print(n);
}
for (int m = 1; m <= 3 - j; m++) {
System.out.print(" ");
}
System.out.println();
}
输出
1
333
55555
谢谢大家的帮助。 我想出了答案。
public class Welcome {
public static void main(String [] args){
for(int j=1; j<=3;j++){
for(int i=1; i<=3-j; i++){
System.out.print(" ");
}
for(int k=1; k<=(2*j-1); k++){
System.out.print(2*j-1);
}
for(int m=1; m<=3-j; m++){
System.out.print(" ");
}
System.out.println();
}
}
}
这也可以如下实现
public class ForLoopPrinter {
public static void main(String[] args) {
int number = 1;
int row = 3;
int column = 5;
char space = '_';
for(int i = 1; i <= row; i++){
for(int j = 1; j <=column;j++){
int offset = (column - number)/2;
if( j <= offset ||
j > (number + offset)){
System.out.print(space);
}else{
System.out.print(number);
}
}
System.out.println();
number += 2;
}
}
}
这里For循环的数量限制为2(一个用于行,一个用于列)。
逻辑是这样的 -
我知道这个问题得到了正确答案,它会像魅力一样起作用。 我只是尝试通过减少之前提供的答案中的For Loops数量来优化代码。 减少For循环将提高性能。
除了减少For循环之外,此代码还具有以下优势 - 此代码具有更高的可伸缩性。 只需将行,列值(例如5,9)或空格字符更改为“*”并检查输出。 你可以玩它。
我建议你使用@Sand给出的答案来理解For循环然后检查这个答案以了解如何优化它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.