[英]Looping Pattern
我需要做一個循環模式,這是一個熟悉的練習,您可以輸入高度並獲得一定的模式。 我需要生成的模式如下:
AA
AABB
AABBAA
上面是高度為3的模式。我似乎沒有任何輸出。 知道怎么了嗎? 我已經看過示例代碼,但是我似乎無法弄清楚我的問題是什么。
import java.util.Scanner;
public class P4 {
public static void main(String[] args) {
Scanner userInputScanner = new Scanner(System.in);
int height = userInputScanner.nextInt();
int i=0, line = 0, a;
// Start setting out the lines
for (i = 1; i != height ; i++){
System.out.printf("i = " + i );
a = i;
// Printing out individual lines
for( line = i; line == 0; line-- ){
// Every ODD part print AA
if (i%2 != 0)
System.out.printf("AA");
// Every EVEN part print BB
else
System.out.printf("BB");
}
}
}
}
// Can use APPEND to string, but unable to use print
// Line = "AA" / "BB" + Str
for (line = i; line == 0; line--)
看看那條線。 除非line等於0,否則此循環將永遠不會運行。
第一件事是,不必一開始就用0定義i和line,因為只要您輸入int i, line, a;
java就會為您完成此操作int i, line, a;
。
對於您的外循環,一種更安全的方法是如果我<=身高,則繼續循環,因為如果我出於某種原因超過身高,它仍然可以工作,而且我認為這不是您想要的。
那里的變量在做什么? 如果您從不使用它,除非在每個循環中都等於它,這幾乎是沒有用的。
為了打印出正確的行,我認為使用StringBuffer創建行是一個好主意。 使用方法如下: http : //www.tutorialspoint.com/java/java_string_buffer.htm
對於這些錯誤,我認為最好使用調試器並在掃描儀上設置一個斷點,以便您可以逐步查看程序正在執行的操作及其變量的含義。
您可以使用eclipse之類的IDE輕松完成此操作。
您不需要第二個for循環。 要獲得如下輸出:
AA
AABB
AABBAA
看一看
public static void main(String[] args) {
Scanner userInputScanner = new Scanner(System.in);
int height = userInputScanner.nextInt();
int i=0, line = 0, a;
String str="";
// Start setting out the lines
for (i = 1; i <=height ; i++){
// Every ODD part print AA
if (i%2 != 0){
str+="AA";
System.out.printf(str+"\n");}
// Every EVEN part print BB
else{
str+="BB";
System.out.printf(str+"\n");
}
}
}
輸出:
5
AA
AABB
AABBAA
AABBAABB
AABBAABBAA
以下是針對您的問題的Java-8解決方案:
IntStream.rangeClosed(1, MAX)
.forEach(i -> IntStream.rangeClosed(1, i)
.mapToObj(j -> j == i ? j % 2 == 0 ? "BB\n" : "AA\n" : j % 2 == 0 ? "BB" : "AA")
.forEach(System.out::print)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.