按计数矩阵。如何制作循环结构

时间:2013-09-24 23:24:34

标签: java

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

示例:如果用户输入为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");   
   }
}

2 个答案:

答案 0 :(得分:1)

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

  1. 您打印一行count%。
  2. 您打印count-2“混合”行。 (count-2代表第一行和最后一行。)
  3. 您打印最后一行百分比。
  4. 要打印“混合”行,您的方法将类似:

    1. 打印百分之一。
    2. 打印count-2星号。 (count-2见上文)
    3. 打印最终的百分比。
    4. 使用printFullRow()printMixedRow()等帮助函数是个好主意。 (这可能是作业引导你的地方。)一般来说,使用更多辅助函数也是一个好主意。

答案 1 :(得分:0)

你需要做这样的事情:

for (int i=0; i<count;i++)
   {
    if(i>0 && i<count-1)
      System.out.print(ast);
    else
      System.out.print(perc);
   }