1. kullanarak konsoldan okumaSystem.in
Önceki derslerde, ekranda bilgi görüntüleme komutlarını tanıdık. System.out
Bunu yapmak için, nesneyi ve onun print()
ve yöntemlerini kullandık println()
. Bu basit ve kullanışlı.
Ancak, muhtemelen tahmin ettiğiniz gibi, ekranda bilgi görüntülemek bizim için yeterli değil. Çoğu programın amacı, kullanıcı için faydalı bir şeyler yapmaktır. Bu, kullanıcının klavyeden veri girebilmesinin çok sık gerekli olduğu anlamına gelir.
Çıktı için olduğu gibi, veri girişi için de özel bir nesnemiz var — System.in
. Ama ne yazık ki bizim için istediğimiz kadar uygun değil. Her seferinde bir karakter klavyeden veri okumamızı sağlar .
System.in
Bunu geliştirmek için, nesneyle eşleştirildiğinde bize ihtiyacımız olan her şeyi verecek başka bir sınıf kullanacağız . Uzun bir süredir Java'nın her duruma uygun sınıfları vardır. Ve şimdi onlardan birini tanıyacağız.
2. Scanner
sınıf
Sınıf Scanner
(tam ad: java.util.Scanner
), konsol, dosyalar ve İnternet gibi farklı kaynaklardan veri okuyabilir. System.in
Klavyeden veri okumasını istiyorsak, nesneyi veri kaynağı olarak hizmet edecek bir argüman olarak iletmeliyiz . Ve sonra Tarayıcı nesnesi onunla ne yapacağını çözecektir.
Bir nesne kullanarak klavyeden okumak Scanner
şuna benzer:
kod | Açıklama |
---|---|
|
Bir nesne oluşturuyoruz Scanner . Klavyeden bir satır metinokuyoruz . Klavyeden bir sayı okuyoruz . |
Kolay görünüyor, ama gerçekten bu kadar basit mi?
Bence bir sürü sorunuz olmalı ve şimdi onları cevaplayacağız.
Ama önce, sınıfı kullanan eksiksiz bir program örneği gösterelim Scanner
:
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
3. Scanner
Nesne oluşturma
İlk soru, bu çizgi nedir Scanner console = new Scanner (System.in);
?
Bu satır kafa karıştırıcı olabilir, ancak her zaman benzer şeyler göreceksiniz. Bu yüzden burada neler olduğunu açıklamanın önemli olduğunu düşünüyoruz.
Genellikle metin içeren bir değişkeni nasıl oluşturduğumuzu hatırlayın:
String str = "text";
Önce değişkenin tipini ( String
), sonra ismini ( str
) ve son olarak eşittir işaretinden sonra değerini yazıyoruz.
Şaşırtıcı çizgimiz aslında aynı:
Scanner console = new Scanner(System.in);
Scanner
Bir değişkeni bildirme ve başlatma
Eşittir işaretinin solundaki her şey, console
adı türü olan bir değişkenin bildirimidir Scanner
. s
Bunun yerine onu veya scanner
veya hatta diyebilirsiniz keyboard
. O zaman kod şöyle görünür:
Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();
Bence bu her şeyi çok daha net hale getiriyor.
Ancak eşittir işaretinin sağındaki kod biraz daha karmaşıktır. Şimdi bundan bahsediyorum new Scanner(System.in);
, burada da doğaüstü bir şey olmuyor dedi.
Bu kodda, Java makinesine şunu söylüyoruz: new
türü olan yeni bir nesne (anahtar sözcük) oluşturun ve nesneyi yeni oluşturulan nesne için veri kaynağı olarak Scanner
iletin .System.in
Scanner
Bu satırın tamamını çalıştırdıktan sonra, programımızın klavyeden veri okumak için kullanacağı Scanner
adında bir değişkenimiz olacak .console
4. Yöntem listesi
Yukarıdaki örnekte, değişkenimiz Scanner
console
bir nesneye referans depolar Scanner
.
Bir değişken tarafından başvurulan bir nesnedeki yöntemleri çağırmak için, değişkenin adından sonra bir nokta, ardından yöntem adı ve herhangi bir argüman yazarsınız. Komutun genel görünümü aşağıdaki gibidir:
variable.method(arguments);
Örnekler:
System.out.println("Hello");
System.out.println(1);
Bir işleve bağımsız değişkenler iletmeyi planlamıyorsanız, boş parantezler yazmanız yeterlidir:
variable.method();
Örnek:
System.out.println();
5. Konsol girişi
Bir nesnemiz olduğunda Scanner
, klavyeden veri almak kolaydır.
Klavyeden bir satırı okumak için şu komuta ihtiyacınız var:
String str = console.nextLine();
Programın çalışması bu satıra geldiğinde duracak ve kullanıcının veri girip enter tuşuna basmasını bekleyecektir. Ardından, kullanıcının girdiği her şey değişkende saklanır str
.
Klavyeden bir sayı okumak için şu komuta ihtiyacınız vardır:
int number = console.nextInt();
Buradaki her şey önceki komut gibidir. Programın çalışması bu satıra geldiğinde duracak ve kullanıcının veri girip enter tuşuna basmasını bekleyecektir. Bundan sonra, kullanıcının girdiği her şey bir sayıya dönüştürülür ve değişkende saklanır number
.
Kullanıcı bir tamsayıya dönüştürülemeyecek bir veri girdiyse, program bir hata üretecek ve kapanacaktır.
Bir kesirli sayıyı klavyeden okumak için şu komuta ihtiyacınız vardır:
double number = console.nextDouble();
Bu ifade, yönteme çok benzer nextInt()
, yalnızca girilen verilerin bir sayıya dönüştürülüp dönüştürülemeyeceğini kontrol eder double
.
Klavyeden iki sayıyı okuyan ve toplamlarını ekranda gösteren bir program örneği:
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int a = console.nextInt();
int b = console.nextInt();
System.out.println(a + b);
}
}
Kullanıcı, boşluklarla ayırarak tek bir satıra birkaç sayı girebilir: sınıfın yöntemleri Scanner
bununla nasıl başa çıkacağını bilir. Bununla birlikte, program sadece kullanıcı tuşuna bastıktan sonra sayıları okur Enter
.
6. Sınıfın diğer Scanner
yöntemleri
Bu arada, yukarıdaki yöntemler sınıfın Scanner
sunduğu her şey değildir. Yöntemlerin tam listesi şuna benzer:
Yöntem | Tanım |
---|---|
|
Verileri okur ve bir formata dönüştürür.byte |
|
Verileri okur ve bir formata dönüştürür.short |
|
Verileri okur ve bir formata dönüştürür.int |
|
Verileri okur ve bir formata dönüştürür.long |
|
Verileri okur ve bir formata dönüştürür.float |
|
Verileri okur ve bir formata dönüştürür.double |
|
Verileri okur ve bir formata dönüştürür.boolean |
|
Bir "jeton" okur. Belirteçler boşluklarla veya enter tuşuna basılarak ayrılır |
|
Tüm satırı okur |
Girdideki bir sonraki belirteci gerçekten getirmeden kontrol etmenizi sağlayan yöntemler de vardır (okumak için hangi yöntemi kullanacağınızı bilmek için).
Yöntem | Tanım |
---|---|
|
var byte mı Giriş a'ya dönüştürülebilir mi byte ? |
|
var short mı Giriş a'ya dönüştürülebilir mi short ? |
|
var int mı Giriş dönüştürülebilir mi int ? |
|
var long mı Giriş a'ya dönüştürülebilir mi long ? |
|
var float mı Giriş a'ya dönüştürülebilir mi float ? |
|
var double mı Giriş a'ya dönüştürülebilir mi double ? |
|
var boolean mı Giriş a'ya dönüştürülebilir mi boolean ? |
|
Başka jeton var mı? |
|
Başka bir hat var mı? |
7. Bir diziden veri okuma
Scanner
Sınıfın çeşitli kaynaklardan veri okuyabildiğinden daha önce bahsetmiştik . Bu kaynaklardan biri bir metin dizisidir .
Şuna benzer:
String str = "text";
Scanner scanner = new Scanner(str);
Nesneyi oluştururken , nesne yerine Scanner
dizeyi geçiyoruz . Ve şimdi nesne dizgeden veri okuyacak. Örnek:str
System.in
scanner
Program kodu: | Açıklama: |
---|---|
|
// bir == 10;
// b == 20;
Ekran çıktısı şöyle olacaktır: |
GO TO FULL VERSION