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.