Java在算法題中的輸入問(wèn)題實(shí)例詳解
前言
在寫(xiě)算法題的時(shí)候,經(jīng)常因?yàn)閿?shù)據(jù)的輸入問(wèn)題而導(dǎo)致卡殼,其中最常見(jiàn)的就是數(shù)據(jù)輸入無(wú)法結(jié)束。
1.給定范圍,確定輸入幾個(gè)數(shù)據(jù)
直接使用普通的Scanner輸入數(shù)據(jù)范圍,然后使用for循環(huán)輸入后續(xù)數(shù)據(jù)。
例如:
Scanner scanner = new Scanner(System.in); //輸入數(shù)據(jù)的范圍 int n = scanner.nextInt(); for(int i = 0;i < n;i++){ arrays[i] = scanner.nextInt(); }
2.沒(méi)有給定范圍,但是給出了結(jié)束符
使用while循環(huán),當(dāng)輸入結(jié)束符的時(shí)候退出循環(huán)
Scanner scanner = new Scanner(System.in); //假設(shè)使用"0"作為結(jié)束符 //無(wú)限循環(huán),在循環(huán)中和結(jié)束符進(jìn)行比較,相同則停止循環(huán) while(true){ String str = scanner,nextLine(); if(str == "0"){ break; } //沒(méi)有結(jié)束,那么對(duì)str進(jìn)行處理 } //判斷輸入的數(shù)據(jù)是否為"0",為"0"則停止循環(huán),不為"0"則繼續(xù)循環(huán) while(!scanner.hasNext("0")){ String str = scanner.nextLine(); //對(duì)str進(jìn)行處理,只要輸入不為"0",就可以一直循環(huán)下去 }
3.沒(méi)有給定范圍,直接給定多組數(shù)據(jù)(這個(gè)最需要注意)
此時(shí)不能在使用Scanner進(jìn)行輸入,因?yàn)闊o(wú)法結(jié)束,我們需要使用(BufferedReader)字符緩沖輸入流來(lái)進(jìn)行輸入。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while((str = br.readLine()) != null){ //當(dāng)讀入數(shù)據(jù)的下一行不為空時(shí),進(jìn)行循環(huán),這里對(duì)str進(jìn)行處理 }
4.Scanner中next()和nextLine()的區(qū)別
next()輸入不會(huì)包含空格以后的數(shù)據(jù),只會(huì)輸入第一個(gè)空格前的字符,nextLine()輸入可以包括空格,只有遇見(jiàn)分隔符(例如回車)才會(huì)結(jié)束
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.輸入多行數(shù)字,未知行數(shù)
沒(méi)有對(duì)一行多數(shù)字做處理,處理方法和上述但行輸入相同。
System.out.println("輸入多行數(shù)字:"); 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) { //只能轉(zhuǎn)換一行一個(gè)數(shù)字,多個(gè)數(shù)字需要額外同上的操作 //int intValue = Integer.valueOf(s); System.out.println(s); }
總結(jié)
到此這篇關(guān)于Java在算法題中的輸入問(wèn)題的文章就介紹到這了,更多相關(guān)Java算法題輸入問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis讀取和存儲(chǔ)json類型數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了Mybatis讀取和存儲(chǔ)json類型數(shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06SpringBoot全局異常與數(shù)據(jù)校驗(yàn)的方法
這篇文章主要介紹了SpringBoot全局異常與數(shù)據(jù)校驗(yàn)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11使用Java實(shí)現(xiàn)大小寫(xiě)轉(zhuǎn)換實(shí)例代碼
最近在開(kāi)發(fā)項(xiàng)目中遇到一個(gè)比較好用的方法,那就是對(duì)字符串中的字母大小進(jìn)行轉(zhuǎn)換,所以下面這篇文章主要給大家介紹了關(guān)于如何使用Java實(shí)現(xiàn)大小寫(xiě)轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2022-06-06利用反射獲取Java類中的靜態(tài)變量名及變量值的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇利用反射獲取Java類中的靜態(tài)變量名及變量值的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12區(qū)分Java中的ArrayList和LinkedList
這篇文章主要介紹了如何區(qū)分Java中ArrayList和LinkedList,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06Java中高效的判斷數(shù)組中某個(gè)元素是否存在詳解
相信大家在操作Java的時(shí)候,經(jīng)常會(huì)要檢查一個(gè)數(shù)組(無(wú)序)是否包含一個(gè)特定的值?這是一個(gè)在Java中經(jīng)常用到的并且非常有用的操作。同時(shí),這個(gè)問(wèn)題在Stack Overflow中也是一個(gè)非常熱門(mén)的問(wèn)題。本文將分析幾種常見(jiàn)用法及其時(shí)間成本,有需要的朋友們可以參考借鑒。2016-11-11ReentrantLock從源碼解析Java多線程同步學(xué)習(xí)
這篇文章主要為大家介紹了ReentrantLock從源碼解析Java多線程同步學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04