我如何在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之外,我的格式还有什么问题吗?工作良好和阅读良好是两个不同的问题。我说的是大括号的位置、缩进、命名等等。我该怎么做呢?