if语句的问题

时间:2015-04-10 05:25:21

标签: java if-statement java.util.scanner

我试图制作一个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);


}

}

4 个答案:

答案 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()方法使用标识运算符(==)来确定两个对象是否相等。对于原始数据类型,这会给出正确的结果。但是,对于对象,它没有。

在您的情况下,您要将ProductTypeString进行比较,这将永远不会相等,因此您可以尝试将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
}