![](/img/trans.png)
[英]Grouping array elements of same value in each line while printing - Java
[英]Printing elements of the array on the same line, when a single element uses “\n” replacement to draw a letter
我找到了一個作業,我應該將用戶輸入打印為用“#”寫的大字母。 如用戶輸入:“ta”output:
########## #
# # #
# # #
# #######
# # #
# # #
我已經寫了下面的代碼,它工作正常但是由於系統打印行我正在用“\n”替換“,”,所以它會在新行上打印所有內容,所以很明顯它會進入一個新行以正確繪制字母,並且在 for 循環中有一個系統打印(而不是系統打印),因此在彼此打印字母時看起來很合適。 但是有沒有辦法一個接一個地打印字母而不是一個接一個地打印? 如果我用 /n 替換“,”,我可以回到打印元素 [1] 而不是 [0] 之前的第一個“打印行”嗎?
任何建議,將不勝感激。
導入 java.util.Arrays; 導入 java.util.Scanner;
公共 class 主要 {
public static void main(String[] args) {
System.out.println("Please input a sentence you would like to convert: ");
Scanner sc = new Scanner(System.in);
String sentence = sc.next();
String alphabet = "abcdefghijklmonpqrstuvwxyz";
char[] sentenceArray;
sentenceArray = sentence.toCharArray();
for (int i = 0; i < sentenceArray.length; i++) {
for (int j = 0; j < alphabet.length(); j++) {
if (sentenceArray[i] == alphabet.charAt(j)) {
System.out.println(Arrays.toString(letters[j]).replace(",", "\n").replace("[", "")
.replace("]", ""));
}
}
}
}
private static String[][] letters =
{
{
" # ",
" # # ",
" # # ",
" ####### ",
" # # ",
"# # "
},
{
"####### ",
"# # ",
"####### ",
"# # ",
"# # ",
"####### "
},
{
" ###### ",
" # # ",
"# ",
"# ",
"# # ",
" ##### "
},
{
"####### ",
"# # ",
"# # ",
"# # ",
"# # ",
"###### "
},
{
"######### ",
"# ",
"######## ",
"# ",
"# ",
"######### "
},
{
"######### ",
"# ",
"######## ",
"# ",
"# ",
"# "
},
{
" ###### ",
" # # ",
"# ",
"# ###### ",
"# # ",
" ##### "
},
{
"# # ",
"# # ",
"######### ",
"# # ",
"# # ",
"# # "
},
{
" ### ",
" # ",
" # ",
" # ",
" # ",
" ### "
},
{
" ##### ",
" # ",
" # ",
" # ",
" # # ",
" ### "
},
{
"# # ",
"# # ",
"##### ",
"# # ",
"# # ",
"# # "
},
{
"# ",
"# ",
"# ",
"# ",
"# ",
"######### "
},
{
"# # ",
"# # # # ",
"# # # ",
"# # ",
"# # ",
"# # "
},
{
"# # ",
"# # # ",
"# # # ",
"# # # ",
"# # # ",
"# # "
},
{
" ###### ",
" # # ",
"# # ",
"# # ",
"# # ",
" #### "
},
{
"######## ",
"# # ",
"####### ",
"# ",
"# ",
"# "
},
{
" ###### ",
" # # ",
"# # ",
"# # ",
"# ## ",
" #### # "
},
{
"######## ",
"# # ",
"####### ",
"# # ",
"# # ",
"# # "
},
{
" ###### ",
"# ",
" ###### ",
" # ",
"# # ",
" ##### "
},
{
"##########",
" # ",
" # ",
" # ",
" # ",
" # "
},
{
"# # ",
"# # ",
"# # ",
"# # ",
" # # ",
" ### "
},
{
"# # ",
"# # ",
" # # ",
" # # ",
" # # ",
" # "
},
{
"# # ",
"# # ",
"# # ",
"# # # ",
" # # # # ",
" # # "
},
{
"# # ",
" # # ",
" # ",
" # # ",
" # # ",
"# # "
},
{
"# # ",
" # # ",
" # ",
" # ",
" # ",
" # "
},
{
"######### ",
" # ",
" # ",
" # ",
" # ",
"######### "
}
};
}
不要為此使用Arrays.toString()
。 這些字母有 6 行高,所以你最外層的循環必須迭代這 6 行。 在里面你迭代用戶輸入的字母。
像這樣:
循環 6 行: for (int line = 0; line < 6; line++)
循環用戶輸入的字母: for (char letter: sentenceArray)
print
為字母打印適當的“行”: TODO by You! 結束行: println()
在打印任何內容之前計算出您需要打印的所有內容,然后您可以打印第一行中所有字母的頂部,然后一次打印所有字母中的第二個,等等。
sentenceArray = sentence.toCharArray();
String[] rowsToPrint = new String[6];
for (int i = 0; i < 6; i++) {
rowsToPrint[i] = "";
}
for (int i = 0; i < sentenceArray.length; i++) {
for (int j = 0; j < alphabet.length(); j++) {
if (sentenceArray[i] == alphabet.charAt(j)) {
for (int k = 0; k < 6; k++){
rowsToPrint[k] = rowsToPrint[k] + letters[j][k];
}
}
}
}
for (int k = 0; k < 6; k++){
System.out.println(rowsToPrint[k]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.