01/10/2018, 17:31

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 ?

Nguyễn Đình Anh viết 19:41 ngày 01/10/2018

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

stackoverflow.com
Birdman

Long float-number output shows letters

java, floating-point
asked by Birdman on 03:20PM - 13 Nov 12
Son Ha viết 19:43 ngày 01/10/2018

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

Nguyễn Đình Anh viết 19:41 ngày 01/10/2018

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 Nên có thể là hàm .toString() trong HighEarner bị sai ở đâu đó thôi

Son Ha viết 19:42 ngày 01/10/2018
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

Nguyễn Đình Anh viết 19:34 ngày 01/10/2018

super.toString()

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

Bài liên quan
0