01/10/2018, 17:17

Chuyển số sang chuỗi mà vẫn giữ số 0 ở đầu

A/c cho e hỏi e muốn nhập vào 1 số rồi chuyển số đó sang dạng chuỗi e có sử dụng hàm String.valueof() nhưng khi nhập vào số có số 0 ở đầu thì nó bị mất số 0 vd: 01, 011…–>1,11…
A/c làm qua rồi cho e cách giải quyết với ạ

HK boy viết 19:18 ngày 01/10/2018

Nhập vào biến string luôn là xong. Nhanh, gọn, nhẹ.

vu van thinh viết 19:24 ngày 01/10/2018

phải nhập số nguyên ấy ạ với lại yêu cầu là số nhập có thể có 0 hoặc k có 0 ạ

*grab popcorn* viết 19:19 ngày 01/10/2018

Nếu bạn nhập số nguyên, các số 0 đầu Java tự xóa r ._.

Cái nextInt() nhập String rồi gọi parseInt(str) sau đó mới return ra int.
Tuy nhiên parseInt dùng các tính toán để convert sang Int nên số 0 của bạn bị triệt tiêu theo.
-> Thầy cô làm vậy bắt bẻ quá? Hoặc ban đang hiểu sai ý đồ thầy cô? O_O

Ref:
http://www.docjar.com/html/api/java/util/Scanner.java.html (Dòng 2063)
http://www.docjar.com/html/api/java/lang/Integer.java.html (Dòng 444)

kien viết 19:32 ngày 01/10/2018

Nếu biết chắc chắn số nguyên nhập vào có giá trị nào thì dùng

String formatted = String.format("%0nd", num);
System.out.println(formatted);
// n là số lượng số 0 tối đa thêm vào và thay đổi đc.
// VD n = 3, nhập: 097 thì in ra 097, 
// nhưng nếu nhập 0987 thì sẽ in ra 987, nhập 9 thì in ra 009

Còn nếu như chỉ thêm trường hợp có 1 số 0 vào trước thôi thì mình code bạn xem. Cái này đúng với mọi số nguyên nhập vào, nhưng chỉ thêm 1 số 0 vào trước thôi

        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        sc.close();
        int count = 1;
        int b = a;
        while (b > 0)
        {
            b = b/10;
            ++count;
        }
        String s = String.format("%0"+count+"d", a);
        System.out.println(s);
Nguyen Ca viết 19:25 ngày 01/10/2018

StringUtils có hàm leftpad đó, tìm hiểu thử.

Thầy cô làm vậy bắt bẻ quá? Hoặc ban đang hiểu sai ý đồ thầy cô?

Trong thực tế nhiều trường hợp như vậy nè, ID bắt buộc có 6 chữ số, nếu là 1 thì phải là 000001
003456,
cho nên thầy yêu cầu vậy cũng không vấn đề gì :v

Quân viết 19:26 ngày 01/10/2018

ID không phải là số mặc dù có thể nó trông giống như số bạn nhé. Số thì sẽ không có số 0 đứng đầu vì nó vô nghĩa. Có thể dễ dàng thấy được sự phân biệt này giữa cách đọc ID và đọc 1 số
VD: với chuỗi 123456
nếu là số đọc là: 1 trăm 2 mươi 3 ngàn 4 trăm 5 mươi 6
nếu là ID hoặc dạng khác sẽ đọc là: 1 2 3 4 5 6

Nguyen Ca viết 19:26 ngày 01/10/2018

Thì nó vẫn là “chữ số” thôi. Sao lại không phải nhỉ -.-

Quân viết 19:31 ngày 01/10/2018

Bạn đừng nhầm giữa chữ số và số. Số mang giá trị còn chữ số là kí tự. Chữ số là các kí tự từ 0-9 còn số là tổ hợp các chữ số theo 1 trật tự nào đó

Nguyen Ca viết 19:28 ngày 01/10/2018

Thằng nào cũng mang giá trị cả, có điều số tính toán được, chữ số chứa thông tin. mà tớ có lầm lẫn gì đâu nhỉ

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

nhập vào 1 số rồi chuyển số đó sang dạng chuỗi

Nếu vậy thì mình nghĩ là bạn nên cho nhập vào là dạng String luôn, chứ Integer thì sẽ bỏ hết mấy cái số “0” ở đầu

phải nhập số nguyên ấy ạ với lại yêu cầu là số nhập có thể có 0 hoặc k có 0 ạ

Có phải là bạn muốn kiểm tra đó có phải là một số nguyên không á ? Vậy thì bạn có thể code 1 cái đệ quy để làm việc đó thôi

    private static String get_Int(BufferedReader in) throws IOException
    {        
        System.out.print("Input: ");
        String input = in.readLine();
        try 
        {
            Integer i = Integer.parseInt(input);
            return input;
        } catch (Exception e) 
        {
            System.out.println("Error !!");            
            return get_Int(in);
        }
    }
Quân viết 19:18 ngày 01/10/2018

Thế thì bạn nên xem lại kiến thức toán học cơ sở rồi. Bạn đang nhầm lẫn nghiêm trọng giữa số và chữ số rồi. 1 chuỗi trông giống như số chưa chắc đã là số. Bạn có thể xem lại lịch sử toán học. Con người có thể làm tính ngay cả khi chưa có đầy đủ các chữ số.

Hung viết 19:21 ngày 01/10/2018

Mình thấy có sự hiểu nhầm giữa 2 khái niệm trong Database, gọi là Nominal Attribute và Numeric Attribute. Khái niệm Attribute giống như attribute trong sơ đồ EER, hay column trong relation bên relational database.

Trước tiên nói sơ qua về từng khái niệm attribute, cụ thể là discrete attribute, dữ liệu có range là tập hợp hữu hạn hạn (finite set), tập hợp vô hạn đếm được (countably infinte set).

Nominal attribute là tập hợp các giá trị để phân loại, ví dụ gender = { male, female }, hair_color = { brown, blond, red, gray, white }, marital status = { single, married, divorced, and widowed }. Mỗi giá trị (value) trong nominal attribute là định tính (qualitative). Tên gọi khác có thể là “category feature” trong Machine Learning, hay “enumeration” trong programming language.

Nomial attribute có range là finite set (như các ví dụ trên) hoặc countably infinite set như “customer_id” là primary key trong Customer table. “customer_id” thường có giá trị tăng dần từ 1 mỗi khi có 1 row mới được insert vào, nhưng “customer_id” chỉ đại diện cho 1 row trong table. Các phép toán cộng, trừ, nhân, chia trên “customer_id” không có ý nghĩa.

Ordinal attribute là nonimal attribute nhưng có ý nghĩa về sắp sếp (sort) hay xếp hạng (ranking) giữa các giá trị trong ordinal attribute. Ví dụ “drink_size” biểu diễn kích thước 1 ly nước có 3 giá trị { small, medium, large }. Tuy nhiên, ordinal attribute không có biết khoảng cách (distance) giữa các value là bao nhiêu. Khoảng cách giữa medium và small, giữa large và medium?

Cũng như nominal attribute, các phép toán cộng, trừ, nhân, chia trên ordinal attribute của nó không có ý nghĩa. Ordinal attribute có thể là finite set hoặc coutably infinite set.

Numeric Attribute chứa các giá trị định lượng (quantitative value), thường được biểu diễn bằng số nguyên hay số thực. Numeric value có thể cộng, trừ, nhân, chia. Vì vậy mà có thể tính các giá trị thống kê trung bình mean. Việc tính mean trên nonimal attribute là không có ý nghĩa. Vài ví dụ: “temperature” lưu trữ nhiệt độ từng ngày, “years_of_experiment” lưu trữ số năm kinh nghiệm làm việc của nhân viên.


Về khái niệm số của OP thì phải xem nó thuộc nominal hay numeric.
Giả sử, nếu số ở đây là “salary”, công đoạn chuyển sang string chỉ để hiển thị UI thì, thì con số đó áp dụng các phép toán cộng, trừ,… đều được. Con số đó thuộc dạng numeric.
Nếu nó chỉ là “product_id” trong Product table thì nó lại có dạng là nominal. Lúc chuyển sang string có thể dựa vào “id” lớn nhất để thêm số 0 vào đầu chữ số hoặc theo quy định “có chiều dài là 6 chữ số”


Lúc mình viết thấy có vẻ lạc đề, nhưng lỡ viết rồi nên ấn reply luôn.
Nếu thấy có ích thì không có gì.
Nếu thấy nó “lạc” thật thì làm ơn bơ qua comment của mình nha.

Đỗ Trung Quân viết 19:31 ngày 01/10/2018

Làm 1 cái điều kiện if ở đó, nếu ký tự đầu tiên là 0 thì in ra số 0 cộng với chính giá trị đó còn không phải thì làm bình thường, nghĩ đơn giản thôi.

Harknes viết 19:28 ngày 01/10/2018

dùng string.Padlef.
link C# microsoft:https://msdn.microsoft.com/fr-fr/library/92h5dc07(v=vs.110).aspx

rogp10 viết 19:32 ngày 01/10/2018

A/c cho e hỏi e muốn nhập vào 1 số rồi chuyển số đó sang dạng chuỗi e có sử dụng hàm String.valueof() nhưng khi nhập vào số có số 0 ở đầu thì nó bị mất số 0 vd: 01, 011…–>1,11…

Nhập ID, đt hay gì ID không bao giờ là số, mà là chuỗi số. Số bình thường sao lại chèn 0 đầu?

Btw,

The XY Problem is asking about your attempted solution rather than your actual problem.

Nguyen Ca viết 19:26 ngày 01/10/2018

thế mình có lầm lẫn gi nhỉ.

ID bắt buộc có 6 chữ số, nếu là 1 thì phải là 000001

VD: với chuỗi 123456
nếu là số đọc là: 1 trăm 2 mươi 3 ngàn 4 trăm 5 mươi 6
nếu là ID hoặc dạng khác sẽ đọc là: 1 2 3 4 5 6

Chữ số là các kí tự từ 0-9 còn số là tổ hợp các chữ số theo 1 trật tự nào đó

sao đá nhau chan chát vậy. Tớ không rành trước đây người ta dùng gi đế tính. Muốn xem nó là số hay ko thì đặt nó vào ngữ cảnh thôi.

Quân viết 19:31 ngày 01/10/2018

Đá nhau chỗ nào bạn, bạn chỉ ra hộ mình cái. Nếu bạn thiếu kiến thức cơ bản thì nên bổ sung lại. Thân. Số và chữ số là kiến thức ở tiểu học bạn có thể xem lại

Nguyen Ca viết 19:25 ngày 01/10/2018

Chữ số là các kí tự từ 0-9 còn số là tổ hợp các chữ số theo 1 trật tự nào đó

nếu là ID hoặc dạng khác sẽ đọc là: 1 2 3 4 5 6

Như bạn nói là tổ hợp đấy. vậy cái ID đó hẳn là số?

ID không phải là số mặc dù có thể nó trông giống như số bạn nhé

Tranh luận thì lo tranh luận, toàn lo công kích cá nhân không vậy?

Quân viết 19:25 ngày 01/10/2018

Thế thì bạn lại nhầm cơ bản khi suy luận logic rồi. Mình nói số là 1 tổ hợp các chữ số không có nghĩa tổ hợp các chữ số là số vì sẽ có 1 số trường hợp tổ hợp các chữ số không tạo ra 1 số hợp lệ.
Câu phát biểu trên của mình cũng tương đương với nhận xét chó là 1 loài động vật nhưng không có nghĩa động vật là chó hay bất kì 1 nhận xét nào tương tự thế. Hiểu chưa bạn. Còn vì sao mình bảo bạn xem lại kiến thức toán cơ bản vì bạn đang hiểu lẫn lộn giữa 2 khái niệm chữ số và số. Nếu bạn xem đó là công kích cá nhân không cho ai đụng đến bạn thì mình cũng chịu, không biết nói gì hơn.

Nguyen Ca viết 19:31 ngày 01/10/2018

vậy OK, tớ không còn gì để nói với cậu

Bài liên quan
0