我试图制作一个if语句,所以当r1和num相等时,它会打印r1,但它不会打印。它询问产品编号,当我输入时没有任何打印。一路走到最后。请告诉我我做错了什么?
import java.io.*;
import java.util.*;
import java.lang.*;
import java.text.*;
public class ProductType implements Comparable<ProductType>
{
private String partnum;
private double price;
private int stock;
public ProductType (String partnum, double price , int stock ){
this.partnum = partnum;
this.price = price ;
this.stock = stock ;
}
public ProductType(){
partnum = "" ;
price = 0;
stock = 0;
}
public void setNum(String partnum)
{this.partnum = partnum;}
public void setPrice(double price)
{this.price = price ;}
public void setStock(int stock)
{this.stock = stock ;}
public String getNum()
{return partnum;}
public double getPrice()
{return price;}
public int getStock()
{return stock;}
public int compareTo(ProductType otherType)
{
int temp = (this.getNum().compareTo(otherType.getNum()));
return temp;
}
//object1.compareTo(object2);
//(function).compareTo.function2;
public String toString()
{
String result = "" + partnum + " Price" + price + "Stock" + stock;
return result;
}
public static void main(String[] args)
{
ProductType r1 = new ProductType("1422", 1.00, 2);
ProductType r2 = new ProductType("8535", 2.00, 3);
Scanner in = new Scanner(System.in);
System.out.print("enter a Product number: ");
String num = in.nextLine();
if ( r1.equals(num))
System.out.print(r1);
}
}
答案 0 :(得分:3)
r1是产品类型的实例,数字是字符串。所以永远不会平等。
您可以使用num string检查r1 instance&#39的num值。喜欢
if ( r1.getNum().equals(num))
System.out.print(r1);
答案 1 :(得分:2)
你的意思是做什么吗?
if (r1.getNum().equals(num)) {
System.out.print(r1);
}
答案 2 :(得分:1)
equals()
方法比较两个对象的相等性,如果它们相等则返回true。 Object类中提供的equals()
方法使用标识运算符(==)
来确定两个对象是否相等。对于原始数据类型,这会给出正确的结果。但是,对于对象,它没有。
在您的情况下,您要将ProductType
与String
进行比较,这将永远不会相等,因此您可以尝试将rq.getNum()
与num
进行比较,这将为您提供所需的结果。
if (r1.getNum().equals(num)) {
System.out.print(r1);
}
答案 3 :(得分:0)
在使用equals mrthod时,我们需要确保两者都是同一类的不同实例。如果参数不为null并且是相同类型且具有相同数值的对象,则方法返回True。因此,如果要比较此情况下的数字,则应使用如下方法。
if ( r1.getNum().equals(num)){
System.out.println(r1); // prints only if equal
}