یک کلاس از کتابخانه بسته جاوا برای وارد کردن داده ها استفاده می شود
Scanner
. این کلاس باید در برنامه ای که در آن استفاده می شود وارد شود. این کار قبل از شروع کلاس عمومی در کد برنامه انجام می شود. کلاس متدهایی برای خواندن کاراکتر بعدی یک نوع مشخص از جریان ورودی استاندارد و همچنین برای بررسی وجود چنین کاراکتری دارد. برای کار با یک جریان ورودی، باید یک شی از کلاس Scanner ایجاد کنید ، و در طول ایجاد مشخص کنید که با کدام جریان ورودی مرتبط باشد. جریان ورودی استاندارد (صفحه کلید) در جاوا با یک شی نشان داده می شود - System.in
. و جریان خروجی استاندارد (نمایشگر) یک شی از قبل برای شما آشناست System.out
. همچنین یک جریان استاندارد برای خروجی خطا وجود دارد - System.err
، اما کار با آن خارج از محدوده دوره ما است.
import java.util.Scanner; // импортируем класс
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // создаём an object класса Scanner
int i = 2;
System.out.print("Введите целое число: ");
if(sc.hasNextInt()) { // возвращает истину если с потока ввода можно считать целое число
i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную
System.out.println(i*2);
} else {
System.out.println("Вы ввели не целое число");
}
}
}
متد hasNextDouble()
اعمال شده بر روی یک شی از کلاس Scanner
بررسی می کند که آیا می توان یک عدد واقعی از نوع را از جریان ورودی خواند یا خیر double
، و متد nextDouble()
آن را می خواند. اگر سعی کنید مقداری را بدون بررسی قبلی بخوانید، ممکن است در حین اجرای برنامه با خطا مواجه شوید (اشکالزدا چنین خطایی را از قبل تشخیص نمیدهد). برای مثال، سعی کنید یک عدد واقعی را در برنامه زیر وارد کنید:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double i = sc.nextDouble(); // если ввести букву s, то случится ошибка во время исполнения
System.out.println(i/3);
}
}
همچنین روشی وجود دارد nextLine()
که به شما امکان می دهد کل دنباله کاراکترها را بخوانید. string، به این معنی که مقدار به دست آمده از طریق این متد باید در یک شی کلاس ذخیره شود String
. در مثال زیر، دو شیء از این دست ایجاد میشوند، سپس ورودی کاربر یکی یکی برای آنها نوشته میشود و سپس یک رشته بر روی صفحه نمایش داده میشود که از ترکیب توالیهای وارد شده از کاراکترها به دست میآید.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1, s2;
s1 = sc.nextLine();
s2 = sc.nextLine();
System.out.println(s1 + s2);
}
}
همچنین روشی وجود دارد hasNext()
که بررسی می کند آیا کاراکتری در جریان ورودی باقی مانده است یا خیر. کلاس String
متدهای مفید زیادی دارد که میتوان آنها را روی رشتهها اعمال کرد (قبل از نام متد، نوع مقداری را که برمیگرداند مشخص میکنیم):
int length()
- طول رشته (تعداد کاراکترهای موجود در آن) را برمی گرداند.boolean isEmpty()
- بررسی می کند که آیا رشته خالی است.String replace(a, b)
- رشتهای را برمیگرداند که در آن کاراکتر a (اللفظی یا متغیر از نوع char) با کاراکتر b جایگزین میشود.String toLowerCase()
- رشته ای را برمی گرداند که در آن تمام کاراکترهای رشته اصلی به حروف کوچک تبدیل می شوند.String toUpperCase()
- رشته ای را برمی گرداند که در آن همه کاراکترهای رشته اصلی به حروف بزرگ تبدیل می شوند.boolean equals(s)
- اگر رشتهای که متد روی آن اعمال میشود با رشتههای مشخصشده در آرگومان متد مطابقت داشته باشد، مقدار true را برمیگرداند (شما نمیتوانید با استفاده از==
عملگر رشته، مانند هر شیء دیگر، مقایسه کنید).int indexOf(ch)
- شاخص کاراکتر ch را در یک رشته برمی گرداند (ایندکس شماره ترتیبی کاراکتر است، اما کاراکترها از صفر شروع می شوند). اگر کاراکتر اصلا پیدا نشد، -1 برمی گردد. اگر یک کاراکتر بیش از یک بار در یک رشته ظاهر شود، ایندکس اولین رخداد خود را برمی گرداند.int lastIndexOf(ch)
- مشابه روش قبلی است، اما اگر نماد چندین بار در خط ظاهر شود، شاخص آخرین رخداد را برمیگرداند.int indexOf(ch,n)
- شاخص کاراکتر ch را در رشته برمی گرداند، اما بررسی را از شاخص n شروع می کند (ایندکس شماره ترتیبی کاراکتر است، اما کاراکترها از صفر شروع می شوند).char charAt(n)
- کد کاراکتر واقع در خط زیر شاخص n را برمی گرداند (ایندکس شماره سریال کاراکتر است، اما کاراکترها از صفر شماره گذاری می شوند).
public class Main {
public static void main(String[] args) {
String s1 = "firefox";
System.out.println(s1.toUpperCase()); // выведет «FIREFOX»
String s2 = s1.replace('o', 'a');
System.out.println(s2); // выведет «firefax»
System.out.println(s2.charAt(1)); // выведет «i»
int i;
i = s1.length();
System.out.println(i); // выведет 7
i = s1.indexOf('f');
System.out.println(i); // выведет 0
i = s1.indexOf('r');
System.out.println(i); // выведет 2
i = s1.lastIndexOf('f');
System.out.println(i); // выведет 4
i = s1.indexOf('t');
System.out.println(i); // выведет -1
i = s1.indexOf('r',3);
System.out.println(i); // выведет -1
}
}
نمونه ای از برنامه ای که نمایه های تمام فضاها را در یک خط وارد شده توسط کاربر از صفحه کلید نمایش می دهد:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
for(int i=0; i < s.length(); i++) {
if(s.charAt(i) == ' ') {
System.out.println(i);
}
}
}
}
پیوند به منبع: جریانها و رشتههای ورودی/خروجی در جاوا
GO TO FULL VERSION