Có method nào tương tự như hàm getch() của C trong java không?

public void waitForCont()
        {
                out.printf("\nPress C to Continue...\n");
                boolean pressed = false;
                String entered = "";
                while(!pressed)
                {
                        entered=kb.next();
                        if((entered.equals("C"))||entered.equals("c"))
                            pressed=true;
                }
          }

google với từ khóa “nhập xuất trong java” chỉ 0.1s có cả nghìn kết quả, vận động 1 chút đi bạn

1 Like

What!!! :joy:

1 Like

nếu như tìm được mình đã không lên đây đợi câu trả lời rồi

Bạn tìm thế nào mà không được, full code sẵn để copy hay giải pháp, từ khóa là gì, bạn biết vì sao không ai trả lời không, vì nó quá cơ bản

1 Like

đúng hơn là không ai biết nhé :slight_smile:

tôi đã tìm hiểu và không có hàm getch() nào trong java. Giải pháp tôi có xem ở một số trang nước ngoài và kết quả không như mong đợi nên mới ngồi mòn ở đây xem thử có ai đã từng tìm hiểu vấn đề này chưa

mà bạn có biết hàm getch() trong C nó chạy như thế nào không mà trả lời kiểu như nó dễ vậy mà cũng đi hỏi :slight_smile:

getch() reads a single character directly from the keyboard, without echoing to the screen.
Đọc chức năng thôi cũng biết là nó thuộc io trong C => Vậy lần sang java.io.* InputStreamReader(System.in);

public static final InputStream in
The “standard” input stream. This stream is already open and ready to supply input data. Typically this stream corresponds to keyboard input or another input source specified by the host environment or user.

Cái này có hợp với bạn không ?

Còn 1 phát ăn ngay như getch() thì có vẻ như hãm hiếp OOP quá nhỉ.

1 Like

mình nhấn 1 phím bất kì rồi nó lưu vào bộ nhớ luôn mà không cần nhấn enter để nhập đó bạn. cái này nó chỉ lấy kí tự đầu thôi

1-2 sec google xẻ cho bạn thấy:

Short answer: Không có

Long answer: bạn phải tự viết function này cho Java hay xài code của người khác viết.

4 Likes

code người khác viết không hoàn thiện bạn ơi. Mình thì không đủ trình viết code này rồi

Không ai đủ trình độ viết 1 phát ra code xịn cả.
Khi code viết ra, refactor nhiều lần mới ra đoạn code cuối cùng.

2 Likes
package console;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.io.InputStreamReader;



/**
 *
 * @author Thanh
 */
public class InputStr {
    public static void main(String[] args) throws IOException, AWTException {
       InputStreamReader cin = null;
       Robot r = new Robot();
       
      while(true){
        
            cin = new InputStreamReader(System.in);
         
            r.keyPress(KeyEvent.VK_ENTER);
                    
            char c = (char) cin.read();
            
            if(c == 'q' ){
                System.out.println(c);
                System.out.println("You press 'q'. I Quit.");
                cin.close(); 
                break;
            }
              
            
         
      }
      
    }
    
}

Chạy với cmd

Chả phải bạn không tìm được, mà là bạn không kiên trì một chút nào cả. Nếu search từ khóa như @qloved mà không được thì tìm cái khác với nghĩa tương đương đi chứ. Bạn chẳng khác gì một ví dụ trong bài viết này: http://www.giaosucan.com/2018/02/luoi-suy-nghi-can-benh-tram-kha-cua-lap.html

Nếu search Tiếng Việt không ra thì thử search Tiếng Anh xem nào. Tiếng Anh thì có cả núi tài liệu trước bạn nhé! Bạn chỉ mong kết quả một cách nhanh chóng nhờ người khác cho có kết quả như mong đợi chứ chả bỏ ra chất xám nào cả. Ngoài ra có thể search rộng hơn chút: Input/Output in java.

1 Like

Dùng cái này thử xem, chịu khó GG một chút đi xem nào !

InputStreamReader(System.in)

1 Like

Dành riêng cho những người nào đang đọc cái bài post này xem coi có đáp án về getch() không thì câu trả lời là không.

Việc thiếu một hàm tương đương trực tiếp với getch trong Java có liên quan đến sự khác biệt cơ bản trong cách xử lý các hoạt động đầu vào/đầu ra trong Java so với các ngôn ngữ cấp thấp như C.

Trong C, hàm getch là một phần của tệp tiêu đề conio.h (đầu vào/đầu ra của bảng điều khiển), đây không phải là một phần tiêu chuẩn của ngôn ngữ C. Nó thường được sử dụng cho các ứng dụng dựa trên bảng điều khiển đơn giản, trong đó thao tác trực tiếp các ký tự trong cửa sổ bảng điều khiển là cần thiết. C, là ngôn ngữ cấp thấp, cho phép truy cập trực tiếp hơn vào tài nguyên hệ thống, bao gồm cả đầu vào và đầu ra của bảng điều khiển.

Mặt khác, Java được thiết kế độc lập với nền tảng và cung cấp mức độ trừu tượng cao hơn. Các chương trình Java thường chạy trong một máy ảo (JVM), giúp bảo vệ mã khỏi bị truy cập trực tiếp vào các tài nguyên hệ thống cấp thấp. Các thao tác đầu vào/đầu ra tiêu chuẩn trong Java được xử lý thông qua các lớp như System.inSystem.out và các thao tác đầu vào nâng cao hơn thường được xử lý bằng các lớp như Scanner hoặc BufferedReader.

Sự vắng mặt của getch trong Java phản ánh sự tập trung của Java vào tính di động, bảo mật và tính trừu tượng khỏi các chi tiết dành riêng cho nền tảng. Đọc một ký tự đơn trực tiếp từ bảng điều khiển mà không lặp lại nó (như getch thực hiện) không phải là thao tác phổ biến trong các ứng dụng Java cấp cao, độc lập với nền tảng. Thay vào đó, Java khuyến khích sử dụng các cơ chế xử lý đầu vào mạnh mẽ và linh hoạt hơn do các lớp thư viện chuẩn của nó cung cấp.

5 Likes

Very nice explanation !

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