如何在 Java 中格式化这些嵌套循环?
How do I format these nested loops in Java?
您好!我正在尝试学习如何在学校的 AP 计算机科学中使用嵌套 for 循环,但我在这个实验室遇到了麻烦:/我在获得正确结果方面取得了一些进展。但是,我在路上遇到了问题。上图显示了我需要做什么。
示例数据:
C 4
A 5
Sample Output:
CCCC DDD EE F
CCCC DDD EE
CCCC DDD
CCCC
AAAAA BBBB CCC DD E
AAAAA BBBB CCC DD
AAAAA BBBB CCC
AAAAA BBBB
AAAAA
上面还有我需要的I/O
目前我写的代码如下:
import java.util.Scanner;
public class LettersAndNumbers {
public static void main(String args []) {
int times;
String character;//I know this sounds stupid
Scanner scan = new Scanner(System.in);
System.out.print("Enter a character and integer");
character = scan.nextLine();
times = scan.nextInt();
String output ="";
for(int i=times; i>=0;i--) {
for(int j=i;j>=1;j--){
for(int x = j; x>=1; x--)
{
output=output + character;
}
output=output+" ";
}
output=output +'\n';
int charValue = character.charAt(0);
character = String.valueOf( (char) (charValue + 1));
}
System.out.println(output);
}
}
它产生以下输出(我快接近了):
输入一个字符和整数C
4
CCCC CCC CC C
DDD DD D
EE E
F
非常感谢您提供的任何帮助!
对于扫描器,我会使用 useDelimiter("\s")(意思是按空格拆分)和 next() 来获取字符串的字符和 int。我会把这个留给你自己弄清楚。
对于它的循环部分。假设你有一个起始字符和时间。您可以打印
for(int i = times; i > 0; i--){
for(int j = 0; j < i; j++){
int numRepeats = i - j;
String output = "";
String repeatedCharacter = String.valueOf(startingCharacter + j);
for(int k = 0; k < numRepeats; k++){
output += repeatedCharacter;
}
System.out.print(output + " ");
}
System.out.println("");
}
工作解决方案:
Scanner scanner = new Scanner(System.in);
String userInputChar=scanner.next();
char userChar=userInputChar.charAt(0);
int userInputDigit=scanner.nextInt();
for(int i=1;i<=userInputDigit;i++){
char charProcess=userChar;
for(int j=(userInputDigit-i)+1,l=userInputDigit;j>=1;j--,l--){
for(int k=l;k>=1;k--){
System.out.print(charProcess);
}
charProcess=(char) (charProcess+1);
System.out.print(" ");
}
System.out.print("\n");
}
scanner.close();
让我知道进展如何。祝你好运。
好的,这里有两个提示:
1) character = String.valueOf( (char) (charValue + 1));
也许看看这个声明是否有更好的地方?
2) 也许你可以为变量 'character' 使用字符串以外的东西...
祝你好运!
您好!我正在尝试学习如何在学校的 AP 计算机科学中使用嵌套 for 循环,但我在这个实验室遇到了麻烦:/我在获得正确结果方面取得了一些进展。但是,我在路上遇到了问题。上图显示了我需要做什么。
示例数据:
C 4
A 5
Sample Output:
CCCC DDD EE F
CCCC DDD EE
CCCC DDD
CCCC
AAAAA BBBB CCC DD E
AAAAA BBBB CCC DD
AAAAA BBBB CCC
AAAAA BBBB
AAAAA
上面还有我需要的I/O
目前我写的代码如下:
import java.util.Scanner;
public class LettersAndNumbers {
public static void main(String args []) {
int times;
String character;//I know this sounds stupid
Scanner scan = new Scanner(System.in);
System.out.print("Enter a character and integer");
character = scan.nextLine();
times = scan.nextInt();
String output ="";
for(int i=times; i>=0;i--) {
for(int j=i;j>=1;j--){
for(int x = j; x>=1; x--)
{
output=output + character;
}
output=output+" ";
}
output=output +'\n';
int charValue = character.charAt(0);
character = String.valueOf( (char) (charValue + 1));
}
System.out.println(output);
}
}
它产生以下输出(我快接近了):
输入一个字符和整数C
4
CCCC CCC CC C
DDD DD D
EE E
F
非常感谢您提供的任何帮助!
对于扫描器,我会使用 useDelimiter("\s")(意思是按空格拆分)和 next() 来获取字符串的字符和 int。我会把这个留给你自己弄清楚。 对于它的循环部分。假设你有一个起始字符和时间。您可以打印
for(int i = times; i > 0; i--){
for(int j = 0; j < i; j++){
int numRepeats = i - j;
String output = "";
String repeatedCharacter = String.valueOf(startingCharacter + j);
for(int k = 0; k < numRepeats; k++){
output += repeatedCharacter;
}
System.out.print(output + " ");
}
System.out.println("");
}
工作解决方案:
Scanner scanner = new Scanner(System.in);
String userInputChar=scanner.next();
char userChar=userInputChar.charAt(0);
int userInputDigit=scanner.nextInt();
for(int i=1;i<=userInputDigit;i++){
char charProcess=userChar;
for(int j=(userInputDigit-i)+1,l=userInputDigit;j>=1;j--,l--){
for(int k=l;k>=1;k--){
System.out.print(charProcess);
}
charProcess=(char) (charProcess+1);
System.out.print(" ");
}
System.out.print("\n");
}
scanner.close();
让我知道进展如何。祝你好运。
好的,这里有两个提示:
1) character = String.valueOf( (char) (charValue + 1));
也许看看这个声明是否有更好的地方?
2) 也许你可以为变量 'character' 使用字符串以外的东西...
祝你好运!