Tại sao khi in float lại có ký tự chữ cái?

 public static void main(String[] args) {
    ArrayList < Customer > a = new ArrayList < Customer > ();
    Customer h = new Customer(1, "son", "1234556", "phuong");
    a.add(h);
    HighEarner h2 = new HighEarner(2, "d", "12dwdw34556", "ddshuY", (float) 12345.0);
    a.add(h2);
    System.out.println(h);
    System.out.println(h2);
    }
 }

khi chạy cái float cuối lại in ra : 1.23434435E10 là sao vậy ?

Đây là cách mà Java in ra float nhé :smile: ko phải lỗi gì đâu :wink:
https://cachhoc.net/2013/07/20/java-dinh-dang-in-so-trong-java-formatting-numeric-print-output-in-java/

3 Likes

vậy có cách nào biến float nhưng gán số nguyên và in ra theo số nguyên không

Bạn đăng code của Class HighEarner lên nhé. Tại nãy không đọc kỹ, bạn in ra ra 1 HighEarner h2 chứ không phải in ra float :smile: Nên có thể là hàm .toString() trong HighEarner bị sai ở đâu đó thôi :wink:

2 Likes
package demo_ass;
import utils.DOpt;
import utils.AttrRef;
import utils.DomainConstraint;
import utils.OptType;
import utils.AttrRef;
import utils.DOpt;
import utils.DomainConstraint;
import utils.NotPossibleException;
import utils.OptType;
import utils.DOpt;
import utils.AttrRef;
import utils.DomainConstraint;
import utils.OptType;
import utils.DOpt;
import utils.AttrRef;
import utils.DomainConstraint;
import utils.OptType;


public class HighEarner extends Customer{
	@DomainConstraint(type = "Float", mutable =true , optional = false, min = 10000000)
	private float income;

	public HighEarner(@AttrRef("name")int i,@AttrRef("name") String n,@AttrRef("address") String a,@AttrRef("phoneNumber") String ph,@AttrRef("income")float in) {
		super(i, n, a, ph);
		if (validate(in)) {
			income = in;
		}	else
			System.err.println("invalid income");
			
		}
	private boolean validate(float in) {
		
		return validateIncome(in);
	}
	@DOpt(type=OptType.Observer) @AttrRef("income")
	public Float getIncome() {
	    return income;
	  }
	@DOpt(type=OptType.Mutator) @AttrRef("income")
	public void setIncome(Float income) {
	  
		  if (validateIncome(income)) {
	  
	    this.income = income;
	  }else {
	    System.err.println("Customer.setIncome: invalid income: " + income);
	  }
	}

	private boolean validateIncome(float in) {
		if(in<10000000) {
			return false;
		}
			else {return true;
			}
			}
	public boolean repOk() {
		return super.repOk()&& validateIncome(this.income);
	}
	public String toString() {
		return super.toString()+ " "+ this.income;
		
	
	}
	public int compareTo(Customer kh) 
		    throws NullPointerException, ClassCastException {
		    // compare two bus objects by name
		    return super.compareTo(kh);
		  }

		  
}

đây bạn xem jup mình

Đăng cả Class Customer lên nữa chứ bạn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?