0

我需要创建一个计数矩阵,内部有星号,周边有百分号。要求用户输入一个数字,星号、百分号和行的数量取决于用户输入。

示例:如果用户输入为 5,则输出将如下所示...

%%%%%
%***%
%***%
%***%
%%%%%

我正在尝试使用 for 循环,并对其进行了编程,以便打印出 5 个星号宽和 5 个高,从而形成一个小正方形,但我不知道如何让每隔一行打印为百分号。

我已经完成的一个有点类似的代码在 7c 之下。会不会类似?我不知道如何用百分号来界定它。

到目前为止,这是我的代码。我还没有为 7d 做任何事情,因为我不知道从哪里开始。我知道我会做一个循环,但我不确定我将如何启动它。我已经把我的代码放进去,这样你就可以看到我的变量和其他必要的信息。谢谢!

import java.util.Scanner;
public class Project1
{
   public static void main(String[] args)
   {
   System.out.println("************** Question 1 *************************\n");
   System.out.println("*\n");
   System.out.println("***************************************************\n");
   System.out.println("************** Question 2 *************************\n");
   char perc = '%';
   char ast = '*';
   System.out.println(ast+"\n");
   System.out.println("***************************************************\n");
   System.out.println("************** Question 3 *************************\n");
   for (int i = 0; i<=9; i++)
   {
      System.out.print(ast);
   }
   System.out.println("\n");
   System.out.println("***************************************************");
   System.out.println();
   System.out.println("************** Question 4 *************************");
   System.out.println();
   for (int i =0; i<=9; i++)
   {
      System.out.println(ast);
   }
   System.out.println();
   System.out.println("***************************************************");
   System.out.println();
   System.out.println("************** Question 5 *************************");
   Scanner keyboardInput = new Scanner(System.in);
   System.out.println("Please enter a positive number :");
   int count = keyboardInput.nextInt();
   for (int i=0; i<=count;i++)
   {
      System.out.print(ast);
   }
   System.out.println("\n");
   System.out.println("***************************************************\n");
   System.out.println("************** Question 6 *************************\n");
   for (int i=1;i<=count;i++)
   {
      System.out.print(ast);
      if (i%5==0)
      {
         System.out.println();
      }
   }   
   System.out.println();
   System.out.println();
   System.out.println("***************************************************\n");
   System.out.println("************** Question 7a ************************\n");  
   System.out.println("***************************************************\n");
   System.out.println("************** Question 7b ************************\n");
   for (int h=0;h<count;h++)
   {
      for (int w=0;w<count;w++)
      {
         System.out.print(ast);
      }
      System.out.println();
   }
   System.out.println(); 
   System.out.println("***************************************************\n");
   System.out.println("************** Question 7c ************************\n");
   for(int i=0;i<=count;i++)
   {
      String x;
      if(i%2==0)
      x="*";
      else
      x="%";
      for(int w=0;w<count;w++)
         {
            System.out.print(x);
         }
      System.out.println();
   }
   System.out.println();
   System.out.println("***************************************************\n");
   System.out.println("************** Question 7d ************************\n");
   System.out.println("***************************************************\n");   
   }
}
4

2 回答 2

1

您需要特殊情况打印第一行和最后一行,并打印每行中的第一个和最后一个字符。该算法将是:

  1. 您打印一行count百分比。
  2. 您打印count-2“混合”行。(count-2考虑第一行和最后一行。)
  3. 您打印最后一行百分比。

要打印“混合”行,您的方法将类似:

  1. 打印百分之一。
  2. 打印count-2星号。(count-2见上文)
  3. 打印最后的百分比。

printFullRow()使用和之类的辅助函数是个好主意printMixedRow()。(这可能是作业应该引导您的地方。)通常使用更多的辅助函数也是一个好主意。

于 2013-09-24T23:31:13.327 回答
0

你需要做这样的事情:

for (int i=0; i<count;i++)
   {
    if(i>0 && i<count-1)
      System.out.print(ast);
    else
      System.out.print(perc);
   }
于 2013-09-24T23:30:15.593 回答