我对java
并不陌生,我想知道如何从我的Boxvolume
方法中打印volume
变量。
我确实知道我需要将Boxvolume
设置为全局变量。因此,如果有人可以帮助我,将不胜感激。
这是我的代码:
public static void main(String[] args) {
Box a = new Box(20, 30, 40);
ArrayList<Box> boxes = new ArrayList<>();
boxes.add(a);
for (Box bx : boxes) {
bx.print();
}
double V = volume(Boxvolume);
System.out.println(V);
}
class Box {
int width;
int height;
int depth;
public Box(int w, int h, int d) {
this.width = w;
this.height = h;
this.depth = d;
}
public double volume(double BoxV) {
int Boxvolume = width * height * depth;
return Boxvolume;
}
public double price(double BV) {
double Boxprice = volume(BV) * 5;
return Boxprice;
}
public void print() {
System.out.println(this.width);
System.out.println(this.height);
System.out.println(this.depth);
System.out.println();
}
}
答案 0 :(得分:0)
您的代码根本是错误的。首先,您从实例变量a.volume();
调用您的volume方法。同样,您在数量和价格方法中不需要双重参数。价格方法已经调用了交易量,您没有在交易量中使用BV参数。
因此正确的版本应类似于:
public static void main(String[] args) {
Box a = new Box(20, 30, 40);
ArrayList<Box> boxes = new ArrayList<>();
boxes.add(a);
for (Box bx : boxes) {
bx.print();
System.out.println(bx.volume());
}
}
class Box {
int width;
int height;
int depth;
public Box(int w, int h, int d) {
this.width = w;
this.height = h;
this.depth = d;
}
public double volume() {
int Boxvolume = width * height * depth;
return Boxvolume;
}
public double price() {
double Boxprice = volume() * 5;
return Boxprice;
}
public void print() {
System.out.println(this.width);
System.out.println(this.height);
System.out.println(this.depth);
System.out.println();
}
}
答案 1 :(得分:0)
建议您遵循Java命名约定并删除不必要的参数。
此示例为您的Box
提供了一种toString()
打印方法,删除了可有可无的参数,根据Java命名约定提供了变量名称,并使用了类方法getVolume()
和{{1} }在其他类方法中。如果您将getPrice()
,height
和width
作为类属性,则不需要其他数量或价格属性,只需使用depth
,{{1 }}和height
或类方法:
width
然后,您可以在具有depth
方法的类中检查输出:
class Box {
int width;
int height;
int depth;
public Box(int w, int h, int d) {
this.width = w;
this.height = h;
this.depth = d;
}
/*
* - renamed the method
* - removed the dispensable parameter
*/
public double getVolume() {
int Boxvolume = width * height * depth;
return Boxvolume;
}
/*
* - renamed the method
* - removed the dispensable parameter
*/
public double getPrice() {
// use the getVolume() method
double Boxprice = this.getVolume() * 5;
return Boxprice;
}
public void print() {
// just print the toString() method
System.out.println(this.toString());
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Height: ");
// here you take the class attributes
sb.append(height);
sb.append("\n");
sb.append("Depth: ");
sb.append(depth);
sb.append("\n");
sb.append("Width: ");
sb.append(width);
sb.append("\n");
sb.append("Price: ");
// here you just take your method
sb.append(getPrice());
sb.append("\n");
sb.append("Volume: ");
// so you do here
sb.append(getVolume());
sb.append("\n");
return sb.toString();
}
}
答案 2 :(得分:0)
您的代码几乎是正确的-无论如何对于初学者:)
您在寻求解决方案的方式上似乎存在一些概念上的误解。如果我过于简单,或者假设您了解的知识少于您,我深表歉意。但是,过度解释比不充分解释似乎更好。
首先使用main()
方法。由于它是static
,因此只有一种-您可以像大老板一样来考虑它,控制小型应用程序中的情况。
那个main()
方法(老板)创建了一个Box
,这是“事物”的单个实例。老板知道这一点,并将其框称为a
。他将该框添加到集合中,该集合目前仅包含框a
,但将来可能会有很多框。我敢肯定,到目前为止,您只需要提到它即可。
Box
类可以做一些事情。它知道自己的width
,height
和depth
,并且知道如何根据这些属性来计算volume
和price
。它还可以print
在系统控制台上显示其自身的表示形式。
在您的main
方法中,创建名为a
的框后,您要询问该框的体积是多少。为此,您必须在感兴趣的框实例上调用volume
方法 。
因此,您不仅要索取任何体积,还索要a
框的体积。您可以使用以下语法进行此操作:
a.volume();
您不需要将任何内容传递到volume
方法中(因此,您应该从double BoxV
方法中删除volume
,因为volume
方法是其中的一部分Box
本身,因此它已经知道Box
知道的一切-width
,height
和depth
,这是它所需要的全部计算音量。
因此,您需要进行一些更改:
volume
方法不需要使用任何参数,而应该是:
public double volume() {
return width * height * depth;
}
(请注意,您也无需将其分配给int Boxvolume
并可以删除该变量-如果愿意,可以完全由您决定保留它)
使用main
方法完成此操作后,您可以使用以下方法获取并打印框a
的体积:
double volume = a.volume();
System.out.println(volume);
如果要打印列表中所有框的数量(目前仅是一个),则将等效代码放入for
循环中,例如:
for (Box bx : boxes) {
bx.print();
double volume = bx.volume();
System.out.println(volume);
}
请注意,这里我们调用的是bx.volume()
,而不是a.volume()
,因为在这种情况下,我们对循环中当前正在考虑的盒子的数量感兴趣,而不仅仅是盒子{ {1}}。