Java 我需要帮助编写一个程序,使用嵌套循环在一行上打印出两个形状
以下是形状的外观: 以下是我目前的代码:Java 我需要帮助编写一个程序,使用嵌套循环在一行上打印出两个形状,java,loops,nested-loops,Java,Loops,Nested Loops,以下是形状的外观: 以下是我目前的代码: public class Diamonds { public static void main(String[] args) { for (int i = 1; i < 10; i += 2) { for (int j = 0; j < 9 - i / 2; j++) { System.out.print(" "); }
public class Diamonds {
public static void main(String[] args) {
for (int i = 1; i < 10; i += 2) {
for (int j = 0; j < 9 - i / 2; j++) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.print("\n");
}
for (int i = 7; i > 0; i -= 2) {
for (int j = 0; j < 9 - i / 2; j++) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.print("\n");
}
}
}
公共类钻石{
公共静态void main(字符串[]args){
对于(int i=1;i<10;i+=2){
对于(int j=0;j<9-i/2;j++){
系统输出打印(“”);
}
对于(int j=0;j0;i-=2){
对于(int j=0;j<9-i/2;j++){
系统输出打印(“”);
}
对于(int j=0;j
我在获取第二个形状时遇到困难通过检查右侧的形状,我们可以注意到,对于左侧形状行中的每个
N
星号,右侧有10-N
,因此,获取代码并扩展它,我们可以得到:
public class Diamonds {
public static final String SPACE = " ";
public static void main(String[] args) {
for (int i = 1; i < 10; i += 2) {
for (int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for (int j = 0; j < i; j++)
System.out.print("*");
System.out.print(SPACE);
for (int j = 0; j < 10 - i; j++)
System.out.print("*");
System.out.print("\n");
}
for (int i = 7; i > 0; i -= 2) {
for (int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for (int j = 0; j < i; j++)
System.out.print("*");
System.out.print(SPACE);
for (int j = 0; j < 10 - i; j++)
System.out.print("*");
System.out.print("\n");
}
}
}
公共类钻石{
公共静态最终字符串空间=”;
公共静态void main(字符串[]args){
对于(int i=1;i<10;i+=2){
对于(int j=0;j<9-i/2;j++)
系统输出打印(“”);
对于(int j=0;j0;i-=2){
对于(int j=0;j<9-i/2;j++)
系统输出打印(“”);
对于(int j=0;j
如果我们提取一些通用代码:
public class Diamonds {
public static final String SPACE = " ";
public static void main(String[] args) {
for (int i = 1; i < 10; i += 2) {
drawLine(i);
System.out.print("\n");
}
for (int i = 7; i > 0; i -= 2) {
drawLine(i);
System.out.print("\n");
}
}
private static void drawLine(int i) {
for (int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for (int j = 0; j < i; j++)
System.out.print("*");
System.out.print(SPACE);
for (int j = 0; j < 10 - i; j++)
System.out.print("*");
}
}
公共类钻石{
公共静态最终字符串空间=”;
公共静态void main(字符串[]args){
对于(int i=1;i<10;i+=2){
抽绳(一);
系统输出打印(“\n”);
}
对于(int i=7;i>0;i-=2){
抽绳(一);
系统输出打印(“\n”);
}
}
专用静态无效抽绳(int i){
对于(int j=0;j<9-i/2;j++)
系统输出打印(“”);
对于(int j=0;j
试试这个:
public static void main(String[] args) {
for (int i = 9; i > 0; i -= 2) {
for (int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for (int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
for (int i = 2; i < 10; i += 2) {
for (int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for (int j = 0; j <= i; j++)
System.out.print("*");
System.out.print("\n");
}
}
为了不破坏您对这个问题的兴趣,我将解释在不编写任何代码的情况下您需要做什么 要获得其中的第二个形状,您需要将另外两个嵌套的
for
循环添加到已有的两个“外部”循环中
第三个循环将产生固定数量的空间。请注意,第一个形状的右边缘和第二个形状的左边缘之间的距离是恒定的,因此第三个循环很容易编码
第四个循环将像第一个循环一样循环,但它们会改变位置:第一个外部循环的第一个内部循环将是第二个外部循环的第四个内部循环,反之亦然。公共类ReverseDiamond{
public class ReverseDiamond {
public static void main(String[] ar) {
int rows = 10;
ReverseDiamond diamond = new ReverseDiamond();
for(int i = 0; i < rows; i++)
diamond.printLine(rows, i);
for(int i = rows - 2; i >= 0; i--)
diamond.printLine(rows, i);
}
private void printLine(int rows, int currRow) {
for(int space = 1; space <= currRow; space++)
System.out.print(" ");
for(int star = 1; star < 2 * (rows - currRow); star++)
System.out.print("*");
System.out.println();
}
}
公共静态void main(字符串[]ar){
int行=10;
ReverseDiamond菱形=新的ReverseDiamond();
对于(int i=0;i=0;i--)
菱形打印线(行,i);
}
专用void打印行(int行,int currRow){
对于(int space=1;space,您可能会喜欢:
public class Diamonds {
public static void main(String[] args) {
int totalStars = 9;
int rows = 9;
for (int r = 0,stars=-1,gap=totalStars; r < rows; r++ ) {
stars+= (r<=rows/2) ?2:-2;
gap=totalStars-stars;
printChars(' ', gap);
printChars('*', stars);
printChars(' ', gap);
int gap2=stars+1;
int stars2=gap+1;
printChars(' ', gap2);
printChars('*', stars2);
printChars(' ', gap2);
System.out.println();
}
}
private static void printChars(char c ,int times) {
for (int i = 0; i < times; i++) {
System.out.print(c);
}
}
}
公共类钻石{
公共静态void main(字符串[]args){
int totalStars=9;
int行=9;
对于(int r=0,stars=-1,gap=totalStars;r stars+=(r你得到了什么输出?你试过调试你的代码吗?我不想实际为你做课堂作业(我不能想象这是实际应用程序的一部分),但有一件事我可以马上看到。你有一个外循环,有两个内循环,第一个打印空格,第二个打印星号,然后外循环换行。这是行不通的,因为你需要在每行打印两组星号。我怀疑正确的代码会有一个外循环和four内部循环。我希望这有帮助
public class Diamonds {
public static void main(String[] args) {
int totalStars = 9;
int rows = 9;
for (int r = 0,stars=-1,gap=totalStars; r < rows; r++ ) {
stars+= (r<=rows/2) ?2:-2;
gap=totalStars-stars;
printChars(' ', gap);
printChars('*', stars);
printChars(' ', gap);
int gap2=stars+1;
int stars2=gap+1;
printChars(' ', gap2);
printChars('*', stars2);
printChars(' ', gap2);
System.out.println();
}
}
private static void printChars(char c ,int times) {
for (int i = 0; i < times; i++) {
System.out.print(c);
}
}
}