JavaRush /Java Blog /Random-TW /Java 中的 I/O 流和字串
articles
等級 15

Java 中的 I/O 流和字串

在 Random-TW 群組發布
Java 套件庫中的類別用於輸入資料ScannerJava 中的 I/O 流和字串 - 1必須將此類匯入到將使用它的程式中。這是在程式碼中的公共類別開始之前完成的。該類別具有從標準輸入流讀取給定類型的下一個字元以及檢查此類字元是否存在的方法。若要使用輸入流,您需要建立Scanner 類別的對象,並在建立過程中指定它將與哪個輸入流關聯。Java 中的標準輸入流(鍵盤)由一個物件表示 - 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有很多可以應用於字串的有用方法(在方法名稱之前我們將指示它傳回值的類型):
  1. int length()— 傳回字串的長度(其中的字元數);
  2. boolean isEmpty()— 檢查字串是否為空;
  3. String replace(a, b)— 傳回一個字串,其中字元 a(文字或 char 類型的變數)被字元 b 取代;
  4. String toLowerCase()— 傳回一個字串,其中原始字串中的所有字元都轉換為小寫;
  5. String toUpperCase()— 傳回一個字串,其中原始字串中的所有字元都轉換為大寫;
  6. boolean equals(s)— 如果套用此方法的字串與方法參數中指定的字串 s 匹配,則傳回 true(不能==像任何其他物件一樣使用字串運算子進行比較);
  7. int indexOf(ch)— 傳回字元 ch 在字串中的索引(索引是字元的序號,但字元從零開始編號)。如果根本沒有找到該字符,它將返回-1。如果一個字元在字串中出現多次,它將傳回第一次出現的索引。
  8. int lastIndexOf(ch)- 與前面的方法類似,但如果符號在行中出現多次,則傳回最後一次出現的索引。
  9. int indexOf(ch,n)— 傳回字元 ch 在字串中的索引,但從索引 n 開始檢查(索引是字元的序號,但字元從零開始編號)。
  10. 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);
            }
        }
    }
}
來源連結: Java 中的 I/O 流和字串
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION