Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何在Java中正确使用参数,为什么它们有优势?_Java_Parameters - Fatal编程技术网

我如何在Java中正确使用参数,为什么它们有优势?

我如何在Java中正确使用参数,为什么它们有优势?,java,parameters,Java,Parameters,代码如下: class Time { public static void printTime (int hour, int minute) { System.out.print (hour) ; System.out.print (":") ; System.out.print (minute) ; } public static void main (String[] args) { hour = 11 ; minute = 30 ; printTime () ; } } 当我

代码如下:

class Time {
public static void printTime (int hour, int minute) {
System.out.print (hour) ;
System.out.print (":") ;
System.out.print (minute) ; 
} 

public static void main (String[] args) {
hour = 11 ; 
minute = 30 ;
printTime () ; 

}
}
当我试图编译它时,终端会这样说:

david-allenders-macbook-pro:~ davidallender$ Javac Time.java
Time.java:9: cannot find symbol
symbol  : variable hour
location: class Time
hour = 11 ; 
^
Time.java:10: cannot find symbol
symbol  : variable minute
location: class Time
minute = 30 ;
^
Time.java:11: printTime(int,int) in Time cannot be applied to ()
printTime () ; 
^
3 errors
david-allenders-macbook-pro:~ davidallender$ 
我正在学习,所以我真的不知道发生了什么。现在我正在书中关于/on/in/over/prepose(我不确定什么是正确的介词)方法中的参数的部分

  • 参数的作用是什么
  • 为什么它有用
  • 我在上面的代码中做错了什么
  • 错误消息是什么意思
    • 这应该更好:

      class Time {
      public static void printTime (int hour, int minute) {
      System.out.print (hour) ;
      System.out.print (":") ;
      System.out.print (minute) ; 
      } 
      
      public static void main (String[] args) {
      int hour = 11 ; 
      int minute = 30 ;
      Time.printTime (hour, minute) ; 
      
      }
      }
      
      糟糕的格式。帮自己一个忙,仔细考虑一下如何格式化代码。对于这样一个小例子来说,这没什么大不了的,但是如果你的雄心壮志和计划不断发展,你就需要它

      我可以这样写:

      package cruft;
      
      import java.text.DecimalFormat;
      import java.text.NumberFormat;
      
      public class Time
      {
          private static final NumberFormat DEFAULT_FORMAT = new DecimalFormat("00");
          private static final int DEFAULT_CAPACITY = 8;
          private static final char DEFAULT_DELIMITER = ':';
      
          private final int hour;
          private final int minute;
          private final int second;
      
          public Time()
          {
              this(0, 0, 0);
          }
      
          public Time(int hour)
          {
              this(hour, 0, 0);
          }
      
          public Time(int hour, int minute)
          {
              this(hour, minute, 0);
          }
      
          public Time(int hour, int minute, int second)
          {
              this.hour = hour;
              this.minute = minute;
              this.second = second;
          }
      
          public String toString()
          {
              StringBuilder builder = new StringBuilder(DEFAULT_CAPACITY);
      
              builder.append(DEFAULT_FORMAT.format(hour))
                     .append(DEFAULT_DELIMITER)
                     .append(DEFAULT_FORMAT.format(minute))
                     .append(DEFAULT_DELIMITER)
                     .append(DEFAULT_FORMAT.format(second));
      
              return builder.toString();
          }
      
          public static void main(String[] args)
          {
              Time time = new Time(11, 5);
              System.out.println(time);
          }
      }
      

      注意:一致的大括号放置、缩进的方法等。这就是我的意思。

      参数提供了执行其工作所需的方法信息。例如,查找数字平方根的函数将该数字作为参数

      您需要传递参数以给出参数值。因此,您需要调用

      printTime(11, 30);
      

      作为一种元评论,这是一种你很早就学会的东西——虽然像这样的网站可以帮助你解决特定的问题,但是你最好读一本关于Java的入门级书籍。如果您已经在读一本书,但是它没有清楚地描述参数,那么您可能想再读一本书:)

      我认为您犯了一个主要错误,应该特别指出的是,您在声明参数时没有定义其类型。Java以其静态的冻结类型系统而闻名,这意味着无论发生什么,您都必须定义变量的类型。要进行比较,在PHP中可以执行
      $number=1在Java中不能使用

      作为原型,每个变量/参数声明遵循
      [type][name]=[可能的默认值]模式,例如
      int number=1。有效的类型是原语(
      int
      double
      byte
      char
      等),当然还有对象,例如
      String
      Calendar
      或您可能使用的任何类

      同样的静态性也适用于调用方法,您需要显式地为每个方法提供精确数量的参数,这些参数具有正确的类型,以便能够调用它们。Java会自动向下或向上转换一些基本值,如
      int
      long
      (如果适用),但通常在Java中,您将使用实际对象,并且只有在适用的情况下才会向下转换。您不能像C/C++/PHP那样自动为方法的参数提供默认值,也就是说,您不能这样做

      public void callMe(int number = 911) { ... }
      
      但你必须这么做

      public void callMe() { callMe(911); }
      public void callMe(int number) { ... }
      
      为了得到同样的效果


      当然,即使是最基本的规则也会有例外,比如静态和动态类型之间的差异,使用适当数量的参数和默认值的令人满意的方法,但您可以暂时忘记这些,先专注于基础。希望这对你有帮助

      什么意思你做了时间。打印时间特别是时间。它的意思是“调用与Time类关联的静态方法printTime”。但是如果没有它,它可以正常工作吗?另外,除了我忘记了int之外,我的格式还有什么问题吗?工作良好和阅读良好是两个不同的问题。我说的是大括号的位置、缩进、命名等等。我该怎么做呢?