Member 13491787 Ответов: 1

Как код узнает, каковы значения параметров "linenum" и "linenumber"? (ЯВА)


- Эй!

Я полный новичок, изучающий Java, поэтому прошу прощения за простой вопрос! Следующая программа выводит пирамиду. Мне интересно, как последние три метода знают, какое значение присваивать своим параметрам. Откуда они берут эту ценность?

import java.util.Scanner;

public class StaticPyramidProg
{
   public final static int MARGIN = 10;

   public static char brickCharacter;
   public static int height;
   
   public static void main(String[] args)
   {
      Scanner scan = new Scanner(System.in);
      System.out.print("\n\tEnter the number of lines for the pyramid: ");
      height = scan.nextInt();
      System.out.print("\tEnter the character from which the pyramid should be made: ");
      brickCharacter = scan.next().charAt(0);
      
      System.out.println(pyramidString());
   }
   
   //-----------------------------------------------------------------
   //  Returns a string containing a representation of the pyramid.
   //-----------------------------------------------------------------
   public static String pyramidString()
   {
      String pattern = "\n";
      for (int lineCount = 1; lineCount <= height; lineCount++)
      {
         pattern += pyramidLine(lineCount);
      }
      return pattern;
   }
   
   //-----------------------------------------------------------------
   //  Returns a string containing a representation of 
   //  a given line of the pyramid.
   //-----------------------------------------------------------------
   private static String pyramidLine(int lineNumber)
   {
      String line = "";
      line += spacesForPyramidLine(lineNumber);
      line += symbolsForPyramidLine(lineNumber);
      line += "\n";
      return line;
   }
   
   //-----------------------------------------------------------------
   //  Returns a string of spaces for the given line of the pyramid.
   //-----------------------------------------------------------------
   private static String spacesForPyramidLine(int lineNum)
   {
      String lineSpaces = "";
      for (int spacesCount = 1; spacesCount <= (MARGIN + height + 1 - lineNum); spacesCount++)
      {
         lineSpaces += " ";
      }
      return lineSpaces;
   }
   
   //-----------------------------------------------------------------
   //  Returns a string of symbols for the given line of the pyramid.
   //-----------------------------------------------------------------
   private static String symbolsForPyramidLine(int lineNum)
   {
      String lineSymbols = "";
      for (int symbolsCount = 1; symbolsCount <= ((lineNum * 2) - 1); symbolsCount++)
      {
         lineSymbols += brickCharacter;
      }
      return lineSymbols;
   }
}


Большое вам спасибо за вашу помощь!!

Что я уже пробовал:

Это скорее вопрос, чем устранение неполадок

1 Ответов

Рейтинг:
1

OriginalGriff

Вы передаете их функции, когда вызываете ее.
Когда вы определяете функцию, вы указываете, какие параметры ей нужно задать:

private static string pyramidLine(int lineNumber)
{
   ...
}
Говорит: "Когда вы вызываете pyramidLine, вы должны дать ему целое число, и он вернет строку".
В теле функции значение параметра хранится в переменной (в данном случае lineNumber), с которой может работать код тела функции. Это не связано ни с какими другими переменными с таким именем: параметр функции является локальным для этой функции и только для этой функции.
Поэтому, когда вы вызываете функцию, вы просто передаете ей целочисленное значение:
String s;
s = pyramidLine(666);
Или:
String s;
int lines = 666;
s = pyramidLine(lines);
Или даже:
String s;
int lines = 666;
s = pyramidLine(lines * 10);
Значение вычисляется и передается в функцию.