Kopmamak için okuduğum JavaSE kitabı içinde tekrar ve antreman yaptığım bir String-Karakter çalışmasıdır. Yap-sil yerine buraya ekleyerek ihtiyaç duyan birileri tarafından kullanılabilmesini hedefledim. Uygulama 2 sınıftan oluşuyor. İlk (ana) sınıf içinde kullanıcıdan stringi alıyoruz, sonra metin işlerini toparladığımız sınıf içinde farklı metodlarla geriye girilen metinle bilgi döndürüyoruz. Bu tip basit uygulamalarda hem fikir verebilecek hemde kullanışlı olabilecek “Tekrar denemek ister misiniz ?” tarzı bir çalışmada bulunmaktadır. Böylece basit ama hem sınıf mantığını, hem karakter-string çalışmalarını, hem scanner sınıfı ile girişi, hemde do-while döngüsü için örnek olabilecek bir yapıyı inceleyebileceksiniz.
Uygulamanın çalışan görüntüsü şöyle;
İlk sınıf GirileniSay.java dosyasından oluşuyor;
package org.mustak.girileniSay;
/**
* @author Hakan Müştak
* 2016/01
*/
import java.util.Scanner;
public class GirileniSay {
//Kullanıcıdan veri girişi aldığımız Scannerlar
private static Scanner scQuit;
private static Scanner scInputText;
//Ana Metod
public static void main(String[] args) {
//Çıkış kontrol döngüsü
do {
//Çalışmayı yaptığımız Metod
goster();
} while (quitControl());
//Çıkış mesajı
System.out.println("[Çıkış tamamlandı]");
}//main
//--------------------------------------------------------------------------
// Ekranda giriş ve gösterimi yapan metod
private static void goster() {
//Metin işleri için sınıfı yarattık
MetinIsleri tj = new MetinIsleri();
System.out.print("Metninizi Girin : ");
scInputText = new Scanner(System.in);
tj.setText(scInputText.nextLine());
System.out.println("-----------------------------------------------------------");
System.out.printf("Girilen Metin : %s\n", tj.getText());
System.out.printf("Karakter Sayısı : %s\n", tj.numberOfChar());
System.out.printf("Küçük Karakter Sayısı : %s\n", tj.numberOfLowerCaseChar());
System.out.printf("Büyük Karakter Sayısı : %s\n", tj.numberOfUpperCaseChar());
System.out.printf("Rakam Sayısı : %s\n", tj.numberOfNumberChar());
System.out.printf("Alfanumerik Karakter Sayısı : %s\n", tj.numberOfAlfanumericChar());
System.out.println("-----------------------------------------------------------");
}
//--------------------------------------------------------------------------
// Çıkış Kontrol metodu
protected static boolean quitControl(){
System.out.print("Tekrar denemek ister misiniz ? [E/H] ");
scQuit = new Scanner(System.in);
if (scQuit.nextLine().equalsIgnoreCase("e"))
return true;
else
return false;
}//quitControl()
}//class
İkinci sınıf MetinIsleri.java dosyasından oluşuyor;
package org.mustak.girileniSay;
/**
* @author Hakan Müştak
* 2016/01
*/
public class MetinIsleri {
// Değişkenler
private String text;
// Getter-Setter
protected String getText() {
return text;
}
protected void setText(String text) {
this.text = text;
}
//--------------------------------------------------------------------------
//Küçük harfli karakter sayısı
protected int numberOfLowerCaseChar() {
int count = 0;
for (int i = 0; i < getText().length(); i++) {
if (Character.isLowerCase(getText().charAt(i)))
count++;
}
return count;
}
//Büyük harfli karakter sayısı
protected int numberOfUpperCaseChar() {
int count = 0;
for (int i = 0; i < getText().length(); i++) {
if (Character.isUpperCase(getText().charAt(i)))
count++;
}
return count;
}
//Sayı içeren karakter sayısı
protected int numberOfNumberChar() {
int count = 0;
for (int i = 0; i < getText().length(); i++) {
if (Character.isDigit(getText().charAt(i)))
count++;
}
return count;
}
//alfanumeric karakter sayısı
protected int numberOfAlfanumericChar() {
int count = 0;
for (int i = 0; i < getText().length(); i++) {
if (!Character.isLetterOrDigit(getText().charAt(i)) && !Character.isSpaceChar(getText().charAt(i)))
count++;
}
return count;
}
//karakter sayısı
protected int numberOfChar() {
return getText().length();
}
}
Hakan Müştak 2016/01

Sınıf adı neden tj? Bir yerden alıntı mı yaptınız
Hayır alıntı değil. Önce sınıfı İngilizce TextJob.java adı altında yazmıştım. Sonra yayınlamaya karar verince dosya ismini MetinIsleri.java yaparken sınıfın içinde refactoring yapmadan burada paylaştım. Kod içindeki tj ismi TextJob dan geliyor.