在if语句中使用未赋值变量(Java)
这是我编程时遇到的一个非常常见的问题,我是一个初学者,所以无论出于什么原因,它都会困扰我。这是我的密码:在if语句中使用未赋值变量(Java),java,variables,object,if-statement,Java,Variables,Object,If Statement,这是我编程时遇到的一个非常常见的问题,我是一个初学者,所以无论出于什么原因,它都会困扰我。这是我的密码: boolean valid = false; do { double newPrice; System.out.print("Enter new price: $"); newPrice = scan.nextDouble(); if(newPrice >
boolean valid = false;
do {
double newPrice;
System.out.print("Enter new price: $");
newPrice = scan.nextDouble();
if(newPrice > 0){
b[bookChosen].price() = new newPrice;
valid = true;
}
}while(!valid);
在if语句中找不到newPrice double,我知道为什么,我只是想不出一种方法来查看用户的输入是否是一个可行的数字。
提前感谢。您的代码有两个基本错误,都集中在这一行:
b[bookChosen].price() = new newPrice;
首先,newPrice不做任何事情,甚至不会编译。new是用于创建新对象的关键字,后面必须跟一个类的构造函数调用-newPrice不是一个类,也不是一个类的构造函数调用
其次,您正试图分配给对象方法的调用。您不能分配给对象方法的调用-只能分配给名称
您可能想做的是:
b[bookChosen].setPrice(newPrice);
这使用setter设置包含在b[BookSelected]中的对象的价格。在Java中,使用setter更改对象的属性是一种非常常见的约定。如果使用IDE,您可能不会遇到这些问题,这是任何人真正编写现代Java插件的唯一方式,您可能会学到很多东西
除此之外,您的代码一般都很好,尽管我认为它编写起来有点简单:
while (true) {
System.out.print("Enter new price: $");
double newPrice = scan.nextDouble();
if (newPrice > 0) {
b[bookChosen].setPrice(newPrice);
break; // leave while True loop
}
}
另一种对我来说不太自然的控制流程是:
double newPrice = 0;
while (newPrice <= 0) {
System.out.print("Enter new price: $");
double newPrice = scan.nextDouble();
}
b[bookChosen].setPrice(newPrice);
新价格;
new关键字总是用来创建一个新对象,而不是指定一个新值。这是我从你的代码中了解到的
b[已选书]。价格
b类的数组。您正在为所选索引处的值赋值
若价格是您的方法,那个么值并没有分配给方法,而是通过参数发送给方法。
像b[BookSelected]。pricenewPrice
如果price是该类的字段,那么如果它在同一个包中,那么它必须是public或protected。然后类的变量是
没有邮件被挂起。它们的赋值方式类似于b[BookSelected]。price=newPrice;
但它并不总是通过私有字段和setter-getter访问您的bean
祝你好运。新价格是什么?为什么不像b[BookSelected].setPricenewPrice;?为什么不能使用double newPrice=scan.nextDouble;?您的意思是b[BookSelected]。price=newPrice还是更好的b[BookSelected]。setnewprice newPrice您还需要增加BookSelected吗?
boolean valid = false;
do {
System.out.print("Enter new price: $");
double newPrice = scan.nextDouble();
if(newPrice > 0){
b[bookChosen].setPrice(newPrice) ;
valid = true;
}
}while(!valid);