Java在算法題中的輸入問題實例詳解

前言

在寫算法題的時候,經常因為數據的輸入問題而導致卡殼,其中最常見的就是數據輸入無法結束。

1.給定范圍,確定輸入幾個數據

直接使用普通的Scanner輸入數據范圍,然後使用for循環輸入後續數據。

例如:

Scanner scanner = new Scanner(System.in);
//輸入數據的范圍
int n = scanner.nextInt();
for(int i = 0;i < n;i++){
    
    arrays[i] = scanner.nextInt();
}

2.沒有給定范圍,但是給出瞭結束符

使用while循環,當輸入結束符的時候退出循環

Scanner scanner = new Scanner(System.in);
//假設使用"0"作為結束符
//無限循環,在循環中和結束符進行比較,相同則停止循環
while(true){
    String str = scanner,nextLine();
    if(str == "0"){
        break;
    }
    //沒有結束,那麼對str進行處理
    
}
//判斷輸入的數據是否為"0",為"0"則停止循環,不為"0"則繼續循環
while(!scanner.hasNext("0")){
    String str = scanner.nextLine();
    //對str進行處理,隻要輸入不為"0",就可以一直循環下去
}

3.沒有給定范圍,直接給定多組數據(這個最需要註意)

此時不能在使用Scanner進行輸入,因為無法結束,我們需要使用(BufferedReader)字符緩沖輸入流來進行輸入。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while((str = br.readLine()) != null){
            //當讀入數據的下一行不為空時,進行循環,這裡對str進行處理
        }

4.Scanner中next()和nextLine()的區別

next()輸入不會包含空格以後的數據,隻會輸入第一個空格前的字符,nextLine()輸入可以包括空格,隻有遇見分隔符(例如回車)才會結束

Scanner scanner = new Scanner(System.in);
String str1 = scanner.next();//輸入hello world
String str2 = Scanner.nextLine();//輸入hello world
System.out.println(str1);//輸出hello
System.out.println(str2);//輸出hello world

5.輸入多行數字,未知行數

沒有對一行多數字做處理,處理方法和上述但行輸入相同。

System.out.println("輸入多行數字:");
        List<String> list = new ArrayList<>();

        String input = "";
        while (true) {
            input = sc.nextLine();
            if (!input.equals("q")) {
                list.add(input);
            }else {
                break;
            }
        }
        for (String s : list) {
            //隻能轉換一行一個數字,多個數字需要額外同上的操作
            //int intValue = Integer.valueOf(s);
            System.out.println(s);
        }

總結

到此這篇關於Java在算法題中的輸入問題的文章就介紹到這瞭,更多相關Java算法題輸入問題內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: