問題描述
給出一個字符串和多行文字,在這些文字中找到字符串出現的那些行。你的程序還需支持大小寫敏感選項:當選項打開時,表示同一個字母的大寫和小寫看作不同的字符;當選項關閉時,表示同一個字母的大寫和小寫看作相同的字符。
輸入格式
輸入的第一行包含一個字符串S,由大小寫英文字母組成。
第二行包含一個數字,表示大小寫敏感的選項,當數字爲0時表示大小寫不敏感,當數字爲1時表示大小寫敏感。
第三行包含一個整數n,表示給出的文字的行數。
接下來n行,每行包含一個字符串,字符串由大小寫英文字母組成,不含空格和其他字符。
輸出格式
輸出多行,每行包含一個字符串,按出現的順序依次給出那些包含了字符串S的行。
樣例輸入
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello
樣例輸出
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello
樣例說明
在上面的樣例中,第四個字符串雖然也是Hello,但是大小寫不正確。如果將輸入的第二行改爲0,則第四個字符串應該輸出。
思路:1爲敏感,0爲不敏感,直接if判斷一下即可,接下來就利用contions直接判斷輸入的字符串裏面是否含有,第一次輸入的字符串。
補充:next()方法讀取到空白符就結束l;
nextLine()讀取到回車結束也就是“\r”;
詳情:https://blog.csdn.net/superme_yong/article/details/80543995
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s1 = scanner.nextLine();
int n = scanner.nextInt();
int m = scanner.nextInt();
if (n == 1) {
String[] arr = new String[m]; // 存放m個輸入字符串
scanner.nextLine(); // 按下Enter換行
for (int i = 0; i < m; i++) {
arr[i] = scanner.nextLine();
}
for (int i = 0; i < m; i++) {
if (arr[i].contains(s1)) { // 如果數組裏有輸入的第一個字符串
System.out.println(arr[i]); // 輸出即可
}
}
} else {
s1 = s1.toLowerCase(); // 全部轉成小寫
String[] a = new String[m]; // 定義兩個數組
String[] b = new String[m];
scanner.nextLine(); // 按下Enter換行
for (int i = 0; i < m; i++) {
a[i] = scanner.nextLine(); // 用戶輸入字符串
b[i] = a[i].toLowerCase(); // b複製a,並且轉換成小寫
}
for (int i = 0; i < m; i++) {
if (b[i].contains(s1)) { // 如果b含有輸入的第一個字符串
System.out.println(a[i]); // 輸出a數組的字符串即可
}
}
}
}
}