So sánh kí tự trong Java

Em đang học java và đang làm 1 bài tập như sau:

Em chép ra 1 đoạn code hướng dẫn ở trong sách như sau:

package com.nac.xulychuoi;
public class Text{
	private String text;
	public Text(String text){
		this.text = text;
	}
	public void printUpper(){
		System.out.println("Các ký tự in hoa:");
		//Duyệt toàn bộ các ký tự của chuỗi text
		for(int i = 0; i < text.length();i++){
			//Lấy ra ký tự thứ i
			char kyTu = text.charAt(i);
			//Kiểm tra xem ký tự đó có là in hoa không?
			if(kyTu >= "A" && kyTu <= "Z"){
				//In ký tự ra màn hình
				System.out.println(kyTu + "");
			}
		}
	}
	public void calcSumNumber(){
		int sum = 0;
		//Duyệt toàn bộ các ký tự của chuỗi text
		for(int i = 0; i < text.length(); i++){
			//Lấy ra ký tự thứ i
			char kyTu = text.charAt(i);
			//Kiểm tra xem ký tự đó có phải là số nguyên không?
			if(kyTu >= "A" && kyTu <= "Z"){
				//Chuyển chuỗi sang số nguyên
				int number = Integer.parseInt(kyTu + "");
				sum = sum + number;
			}
		}
		//In tổng các ký tự là số ra màn hình
		System.out.println("\nSum = " + sum);
	}
}

package nữa của chương trình:

package com.nac.xulychuoi.main;
import com.nac.xulychuoi.Text;
public class Main{
	public static void main(String[] args){
		Text text = new Text("Hello Android12");
		text.printUpper();
		text.calcSumNumber();
	}
}

Và nó báo sai ở dòng lệnh: if(kyTu >= "A" && kyTu <= "Z"){
ý em hiểu là câu lệnh trên có nghĩa nếu kyTu tồn tại trong khoảng ký tự từ A đến Z thì in ra chữ đó trong chuỗi nhập vào, nhưng khi chạy lại sai, em tìm hiểu nguyên nhân thì thấy là >= và <= không áp dụng được cho kiểu dữ liệu char và String. Nhưng em vẫn chưa biết sửa sao cho đúng ạ. Mong mọi người giải thích hộ em.

1 Like

Kí tự thì dùng toán tử so sánh được. Nhưng bạn đang dùng chuỗi chứ không phải kí tự.
Không biết do bạn nhìn nhầm hay sách ghi sai. Dòng đó phải là:

if(kyTu >= 'A' && kyTu <= 'Z'){

Để ý là dấu nháy đơn chứ không phải dấu nháy kép.

9 Likes

Cái này mới à nha!
(20 characters)

2 Likes

Em cảm ơn ạ, giờ em mới thấy nó có khác thật, trước giờ em cứ tưởng 2 dấu nháy đơn hoặc nháy kép tác dụng y hệt nhau :frowning:

Các ngôn ngữ strong typed như Java thì phân biệt ký tự và chuỗi. Còn một số ngôn ngữ weak typed thì dùng để phân biệt escaped và unescaped string.

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