Java Bài 7: Nhập/Xuất Trên Console

Posted by

Được chỉnh sửa ngày 2/9/2017.

Chào mừng các bạn quay trở lại với bài học Java số 7 trong chuỗi bài học về lập trình ngôn ngữ Java của Yellow Code Books.

Thực ra bài hôm nay mình sẽ nói hơi xa hơn kiến thức của các bạn đã làm quen từ các bài học trước, kiến thức hôm nay có liên quan nhiều đến OOP (hướng đối tượng) mà bạn sẽ học ở các bài sau.

Ồ đừng vội nản nhé. Bạn có thể xem bài hôm nay sẽ hướng dẫn bạn sử dụng một “công cụ” để các bạn tiến hành nhập/xuất thông qua Console. Công cụ này giúp cho các bạn sau khi nhập dữ liệu vào từ bàn phím, nó sẽ lấy dữ liệu được nhập này chuyển vào chương trình của bạn, để chương trình xử lý, rồi xuất ra kết quả thông qua màn hình Console.

Sau bài học hôm nay thì các bạn có thể test thoải mái các dòng code của mình, để hỗ trợ tốt vào quá trình học Java của bạn. Nhưng trước hết, chúng ta hãy cùng tìm hiểu sâu hơn về khái niệm Console này.

Khái Niệm Console

Đầu tiên bạn có thể hiểu Console như là một bảng điều khiển chuyên dụng, như các Game Console chính là các thiết bị chuyên cho việc điều khiển game, hay các trang web quản lý như quản lý nhân viên cũng có thể coi là các Console chuyên dụng cho việc quản lý.

Trong ngôn ngữ lập trình, Console được biết đến như là một cách điều khiển ứng dụng đơn thuần nhất thông qua các dòng text (dòng lệnh), nó được phân biệt với điều khiển bằng UI.

À sẵn tiện mình muốn nói rõ luôn, đó là tất cả các bài học trong chương trình học Java của chúng ta sẽ dựa trên việc điều khiển bằng Console, do đó nó sẽ khác với các ứng dụng Java có giao diện cụ thể bạn nhé, các bài học chủ yếu mang đến cho bạn kiến thức làm thế nào sử dụng ngôn ngữ Java (để có thể lập trình ứng dụng Android), hơn là lập trình ứng dụng Java nên sẽ không có giao diện hoành tráng. Bạn nên nhớ điều này.

Console trong chương trình học của chúng ta là đây, ở các bài làm quen sơ sơ trước, khi bạn thực thi chương trình thì cũng đã biết tới cửa sổ Console này rồi đúng không nào.

Console - Mẫu

Nhập Trên Consolse

Chúng ta nói đến các cách thức để bạn nhập dữ liệu từ Console trước. Để bắt đầu, bạn hãy mở Eclipse lên. Đầu tiên mình muốn bạn thử khai báo một đối tượng Scanner như code bên dưới. Bạn code đi rồi mình sẽ nói rõ hơn lý do tại sao phải code như vậy ở bên dưới dòng code này.

Scanner scanner = new Scanner(System.in);

Các khái niệm lớp (class) hay đối tượng gì gì đó thì bạn sẽ được làm quen sau này, nó thuộc về kiến thức OOP như mình có nói đến ở đầu bài học. Nhưng bạn có thể hiểu trước là đối tượng cũng giống như biến vậy, bạn có thể đặt tên cho nó tùy ý (theo quy tắc đặt tên của biến). Như ở trên chúng ta đặt tên cho đối tượng của Scanner là scanner. Chỉ khác biến ở chỗ là đối tượng của lớp phải được khởi tạo bằng từ khóa new như trên. Khi đó tổng thể code của bạn như sau.

public class MyFirstClass {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        Scanner scanner = new Scanner(System.in);
    }
 
}

Lan Man Về Cách Thức Bạn Code

Mục này cho phép mình nói lan man về kinh nghiệm code một tí xíu. Đó là nhiều bạn sau khi gõ xong dòng code trên đây, có thể sẽ có báo lỗi từ hệ thống như hình sau.

Console - Xuất báo lỗi

Báo lỗi là vì hệ thống đang không biết lớp Scanner là gì. 😀 . Đó là bởi vì trước đây bạn chỉ sử dụng các biến nguyên thủy, hoặc các lớp nằm trong package java.lang, mà chúng ta không cần phải quan tâm. Chà vậy chúng ta cần quan tâm gì? Thực ra trong Java, mỗi khi bạn code, bạn phải chỉ định nguồn gốc của các lớp bạn sẽ dùng, thông qua từ khóa import để ở đầu file, theo sau import là package có chứa lớp cần dùng. Bạn có thể xem thêm kiến thức về package ở đây.

Theo đó, ở ví dụ trên chúng ta cần đến lớp Scanner. Do đó chúng ta cần import đúng package mà hệ thống muốn.

Để import đúng package có lớp Scanner cần dùng trên đây là một điều cực kỳ dễ dàng, có nhiều cách để thực hiện điều này, bạn hãy chọn một trong những cách sau.

Crl + Space

Tổ hợp phím thần thánh này ai lập trình cũng phải biết, khi bạn đang gõ tên một lớp nào đó của hệ thống mà muốn chúng được tự động điền các chữ còn lại, và tất nhiên với Eclipse tổ hợp phím này cũng sẽ khuyến mãi cho bạn việc import package của đối tượng đó một cách tự động luôn.

Giả sử bạn đang gõ dòng code khai báo Scanner trên đây, thay vì gõ hết tất tần tật như code mẫu trên, bạn thử gõ vài chữ rồi nhấn Ctr + Space, bạn sẽ thấy gợi ý từ hệ thống, giống như khi bạn nhấn dấu (.)các dòng code đầu tiên bạn đã làm quen vậy.

Console - Xuất với gợi ý từ hệ thống

Vậy với vệt sáng đang ở dòng đầu tiên Scanner, bạn nhấn Enter, kết quả dòng code được tự động hoàn thành và hệ thống cũng import sẵn package java.util.Scanner cho bạn mà bạn không cần phải nhớ chúng là ai và từ đâu đến đúng không nào. Bạn thử gõ hết câu lệnh trên nhưng lần này siêng nhấn Ctr + Space ở mỗi từ (scanner, new, Scanner, System) xem sao nhé. Kết quả sẽ không còn lỗi nữa.

Console - Xuất với áp dụng gợi ý từ hệ thống

Sử Dụng Gợi Ý Từ Eclipse

Cách thứ hai này là bạn cứ gõ đi, rồi mỗi khi bạn gõ sai gì đó, đừng lo lắng. Bạn cứ để ý nếu thanh bên trái của editor xuất hiện hình cái bóng đèn cùng với dấu X màu đỏ, là khi Eclipse đã xác định ra lỗi và biết cách sửa lỗi cho bạn rồi, bạn chỉ cần click chuột vào bóng đèn này sẽ thấy các gợi ý sửa lỗi như hình sau.

Console - Gợi ý sửa lỗi từ hệ thống

Còn chờ gì nữa mà không chọn Import ‘Scanner’ (java.util), điều này có nghĩa là Eclipse đã hỏi bạn cho phép import package java.util.Scanner hay không rồi đó.

Import Thủ Công

Tất nhiên cách này dành cho bạn nào biết chính xác lớp này nằm trong package nào rồi nên bạn có thể gõ import một cách thủ công.

Lan man hơi dài rồi, quay trở lại với việc bạn vừa khai báo đối tượng của lớp Scanner trên kia. Dòng tiếp theo bạn chỉ cần gọi scanner.nextXxx(); thì khi bạn chạy chương trình, khi hệ thống thực thi đến dòng này, nó sẽ dừng lại chờ, và lúc đó Console sẽ xuất hiện con nháy chờ người dùng nhập vào một giá trị có kiểu dữ liệu là Xxx rồi mới tiến hành gán giá trị này vào biến tương ứng và thực hiện tiếp các câu lệnh bên dưới.

Bạn hãy thử vài ví dụ sau cho từng scanner.nextXxx(); cụ thể nhé.

Ví Dụ Nhập Dữ Liệu Kiểu Chuỗi

Với ví dụ này bạn thử cho người dùng nhập vào tên của họ từ Console rồi in ra dòng xin chào ngay trên Console như sau.

Để đợi người dùng nhập vào tên bạn gõ dòng sau vào sau khi khai báo scanner.

String name = scanner.nextLine();

Khi đó tên người dùng nhập vào từ Console sẽ được gán vào biến kiểu String (đây là kiểu chuỗi mà bạn sẽ được làm quen sau) có tên là name. Nhưng để dễ dàng hơn cho người dùng, chúng ta nên có các dòng System.out để in ra chỉ dẫn cho người dùng, và in ra dòng chào hỏi cuối chương trình. Code tổng thể của chúng ta như sau.

import java.util.Scanner;;
 
public class MyFirstClass {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please enter your name here: ");
        String name = scanner.nextLine();
        System.out.println("Hello! " + name);
    }
 
}

Khi này nếu bạn chạy chương trình, chỉ có dòng text “Please enter your name here: “ xuất hiện, đừng tắt cửa sổ Console nhé, hãy tiếp tục nhập vào một text, sau khi Enter bạn sẽ nhận được một text nữa in ra với nội dung “Hello!” và text bạn vừa nhập, text in ra đó chính là nội dung biến name được scanner lấy dữ liệu từ Console rồi gán vào đấy.

Console - Nhập vào một String

Ví Dụ Nhập Dữ Liệu Kiểu int

Tương tự nếu ví dụ này hỏi người dùng nhập tuổi, bạn cũng nên có câu in ra gợi ý, dòng scanner.nextInt(), và dòng in ra kết quả như sau.

System.out.println("How old are you? ");
int age = scanner.nextInt();
System.out.println("Your age is: " + age);

Ví Dụ Nhập Dữ Liệu Kiểu Float

Scanner hỗ trợ nhập cho tất cả các kiểu dữ liệu nguyên thủy, ví dụ này nhập vào kiểu float và bạn hoàn toàn có thể áp dụng cho các kiểu dữ liệu nguyên thủy còn lại.

System.out.println("How about your salary? ");
float salary = scanner.nextFloat();
System.out.println("Your salary is: " + salary);

Xuất Trên Console

Chắc bạn cũng biết, để xuất dữ liệu ra Console thì cứ gọi System.out.println() thôi chứ gì. Dễ quá, các bài trước và bài hôm nay bạn đã làm quen rồi. Nhưng kiến thức về xuất dữ liệu ra Consolse còn vài thứ vui vẻ nữa, mình xin được liệt kê vắn tắt như sau.

– Bạn có thể dùng câu lệnh print() thay vì println(). Nếu như với println() thì các bạn đã biết nó giúp xuất dữ liệu ra rồi kèm theo xuống hàng sau khi xuất. Thì print() chỉ xuất dữ liệu thôi và không xuống hàng. Bạn có thể thử áp dụng print() cho các thông báo chỉ dẫn như “Please enter your name here: “ trên kia để xem sự khác biệt nhé.
– Nếu bạn muốn hiển thị các ký tự đặc biệt sau: dấu nháy đơn (‘), dấu nháy kép (“), và dấu gạch chéo (\). Thì bạn cứ kèm theo một gạch chéo (\) nữa ở trước các ký tự này. Chẳng hạn bạn muốn hiển thị dòng Thư mục chứa file “ấy” là C:\Location\Ay, thì bạn gõ lệnh xất như sau System.out.print(“Thư mục chứa file \”ấy\” là C:\\Location\\Ay”);.
– Ngoài ra bạn còn có thể chèn thêm các ký tự giúp định dạng dữ liệu xuất, như “\t” sẽ chèn thêm một tab, hay “\n” sẽ giúp xuống dòng. Bạn thử tự kiểm chứng bằng cách gõ xòng lệnh này nhé System.out.print(“\tHello\nWorld”);.

Chúng ta vừa thực hành các câu lệnh nhập/xuất đáng giá từ console, hãy xem chúng giúp ích gì cho bạn ở các bài học kế tiếp nhé.

Cảm ơn bạn đã đọc các bài viết của Yellow Code Books. Bạn hãy đánh giá 5 sao nếu thấy thích bài viết, hãy comment bên dưới nếu có thắc mắc, hãy để lại địa chỉ email của bạn để nhận được thông báo mới nhất khi có bài viết mới, và nhớ chia sẻ các bài viết của Yellow Code Books đến nhiều người khác nữa nhé.

Bài Kế Tiếp

Bạn sẽ được tìm hiểu khái niệm Block, Scope, và làm quen với các Câu Lệnh Điều Kiện trong Java.

Advertisements
Rating: 4.9/5. From 21 votes.
Please wait...

5 comments

  1. thật sự liếm 1 ad viết bài có tâm như ad rất khó, e đã từng mất phương hướng và lan man học trên mạng nhưng h e đã tìm dc địa chỉ phù hợp

  2. Mình là lính mới nhập môn, cũng có review qua nhiêu tài liệu nhưng đúng là đọc tài liệu của Ad thấy rất phù hợp cho lính mới như mình, viết rất chi tiết, dễ hiểu. Cảm ơn Ad rất nhiều.

Gửi phản hồi