Java中Scanner的用法示例小結(jié)
前言
有時(shí)候我們?cè)诰帉懘a的時(shí)候可能會(huì)使用輸入和輸出,那Java也有自己的輸入和輸出,今天我們來探究一下
一 輸出
第一種:System.out.println(msg); // 輸出?個(gè)字符串, 自帶換?
第二種:System.out.print(msg); // 輸出?個(gè)字符串, 不帶換?
第三種:System.out.printf(format, msg); // 格式化輸出
public class test { public static void main(String[] args) { System.out.println("hello world");//打印完會(huì)自動(dòng)換行 System.out.print("hello world");//打印完不會(huì)自動(dòng)換行 int a = 10; System.out.printf("%d\n",10);//打印數(shù)據(jù),需要輸入打印數(shù)據(jù)類型 } }
運(yùn)行結(jié)果如下
這里從運(yùn)行結(jié)果我們可以發(fā)現(xiàn)這里的第二個(gè)數(shù)據(jù)打印完并沒有換行
第三種就和c語言的打印基本一一致
println 輸出的內(nèi)容?帶\n換行,print 不帶\n換行 printf 的格式化輸出?式和C語?的printf 是基本?致的
我們使用第三種輸出的話,需要了解其對(duì)應(yīng)類型,才可以輸出,所以我們是經(jīng)常使用的是第一種輸出方式
二 輸入
Scanner的使用
Java輸入需要使用使?Scanner讀取字符串/整數(shù)/浮點(diǎn)數(shù),使?時(shí)需要導(dǎo)?該類包,Java中有許多的工具類Package java.util每種工具類的功能是不同的,我們使用那個(gè)功能必須在程序上面加上對(duì)應(yīng)的工具類名稱,否則無法執(zhí)行其功能
import java.util.Scanner;
那我們?nèi)绾问褂媚?,下面我們來介紹
public class test{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt();//表示輸入的是整形 System.out.println(num); sc.close();//關(guān)閉我們的輸入 } }
這里綠色是我們輸入的,白色是輸出的
這里我們不只是可以整形輸入
public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請(qǐng)輸入你的名字:"); String str = sc.nextLine();//輸入字符串 System.out.println(str); System.out.println("請(qǐng)輸入你的年齡:"); int age = sc.nextInt(); System.out.println(age);//輸入int類型 System.out.println("請(qǐng)輸入你的體重"); double weight = sc.nextDouble(); System.out.println(weight); sc.close();//關(guān)閉我們的輸入 } }
從上面我們可以看出每種數(shù)據(jù)的輸入是需要不同的數(shù)來接收
int 類型一般用 變量名. nextInt
double 類型一般用 變量名 .nextDouble()
String 字符串類型 變量名 .nextLine()或者變量名.next()
nextline()和next()輸入的區(qū)別
我們還是那上面的代碼舉例,我們把上面代碼的sc.nextLine()改為sc.next()
public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請(qǐng)輸入你的名字:"); String str = sc.next();//輸入字符串 System.out.println(str); System.out.println("請(qǐng)輸入你的年齡:"); int age = sc.nextInt(); System.out.println(age);//輸入int類型 System.out.println("請(qǐng)輸入你的體重"); double weight = sc.nextDouble(); System.out.println(weight); sc.close();//關(guān)閉 } }
我們發(fā)現(xiàn)這里的程序運(yùn)行竟然出錯(cuò)了,為什么呢,這里的錯(cuò)誤是我們把zhang是名字,這里的san被程序認(rèn)為是年齡,年齡是int整形,但是san是字符串類型,所以這里類型不符合,所以報(bào)錯(cuò)了
sc.nextLine()表示的輸入一行,下一行開始前結(jié)束 sc.next()表示的輸入到遇到空格就結(jié)束
因?yàn)?strong>sc.next()遇到空格就結(jié)束,導(dǎo)致了代碼的出錯(cuò)
多組輸入
例如:使?Scanner循環(huán)讀取n個(gè)數(shù)字,并求取其平均值
public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 0; double sum = 0; while(sc.hasNextDouble()){ double tem = sc.nextDouble(); sum += tem; count++; } System.out.println("總數(shù)為:"+sum); System.out.println("平均數(shù)為:"+sum/count); } }
while(sc.hasNextDouble()){ double tem = sc.nextDouble(); } 這里控制的是循環(huán)多組輸入,這里輸入類型為double, 如果改變輸入類型,這里while循環(huán)的數(shù)據(jù)類型也要改變 與基本的輸入只是next變成了hasNext就行了
多組輸入的截止
當(dāng)循環(huán)輸?多個(gè)數(shù)據(jù)的時(shí)候
Windows上的CMD中使?ctrl+z
Linux/Mac/IDEA的控制臺(tái)上使?ctrl+d
我這里使用的是IDEA平臺(tái),所以輸入ctrl+d就截止了多組輸入
三 綜合練習(xí):猜數(shù)字游戲
完成猜數(shù)字游戲 ,用戶輸入數(shù)字,判斷該數(shù)字是大于,小于,還是等于隨機(jī)生成的數(shù)字,等于的時(shí)候退出程序。 (生成隨機(jī)數(shù)的范圍是1 ~ 100)
從題目中可以知道,我們首先要生成隨機(jī)數(shù),然后才能進(jìn)行猜測(cè)
生成隨機(jī)數(shù)
Java的Scanner中也提供了一個(gè)生成隨機(jī)數(shù)的工具類java.util.Random,我們使用其就可以生成隨機(jī)數(shù)
我們就想要這樣讓系統(tǒng)生成隨機(jī)數(shù)
Random生成隨機(jī)數(shù),但這里生成的是偽隨機(jī)數(shù)
Random() 生成一個(gè)隨機(jī)數(shù) Random( long seed) 生成一個(gè)隨機(jī)數(shù)根據(jù)我們提供的種子
使用其功能必須要加上生成隨機(jī)數(shù)和輸入的工具類
public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random random = new Random();//默認(rèn)隨機(jī)種子是系統(tǒng)時(shí)間 System.out.println(random); } }
生成隨機(jī)數(shù)結(jié)果如下
這里發(fā)現(xiàn)生成的是偽隨機(jī)數(shù),這里并不是我們想要的,我們想要的是生成1~100之間的數(shù)字
Random( long seed)
上面生成的偽隨機(jī)數(shù)不是我們想要的,如果我們想讓其按照我們的要求生成隨機(jī)數(shù),Random后面必須要加上種子根據(jù)我們的需要。
public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random random = new Random();//默認(rèn)隨機(jī)種子是系統(tǒng)時(shí)間 int guessNum = random.nextInt(100)+1;//[0-100)+1變成生成1 ~ 100之間的數(shù) System.out.println(guessNum); } }
我們要注意這里的random.nextInt(100) 生成的時(shí)[0 , 100)之間的數(shù),因此我們需要+1這樣就生成我們所想要的[1,100]之間的數(shù)了
生成隨機(jī)數(shù)結(jié)果如下
我們可以看出我們生成的隨機(jī)數(shù)滿足我們的需求了
猜數(shù)字
我們這里肯定不可能一次就猜對(duì),所以這里我們可以讓它循環(huán),直到我們才對(duì)為止,我們既然需要猜多次,那我們就需要使用上面所學(xué)的多組輸入啦
public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random random = new Random();//默認(rèn)隨機(jī)種子是系統(tǒng)時(shí)間 int guessNum = random.nextInt(100)+1;//[0-100)+1變成生成1 ~ 100之間的數(shù) System.out.println(guessNum); while (sc.hasNextInt()){//多組輸入 System.out.println("請(qǐng)猜數(shù)1~100"); int num = sc.nextInt(); if(num>guessNum){ System.out.println("猜大了"); } else if (num<guessNum) { System.out.println("猜小了"); }else{ System.out.println("猜對(duì)了"); //猜對(duì)了,把這個(gè)數(shù)字打印一下 System.out.println("正確的數(shù)字為:"+guessNum); break; } } sc.close();//關(guān)閉輸入 } }
運(yùn)行結(jié)果如下
到這里就結(jié)束了,希望對(duì)大家有所幫助,欲知后事如何,請(qǐng)聽下回分解
到此這篇關(guān)于Java中Scanner的用法的文章就介紹到這了,更多相關(guān)JavaScanner用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java對(duì)圖片進(jìn)行壓縮和resize縮放的方法
本篇文章主要介紹了java對(duì)圖片進(jìn)行壓縮和resize調(diào)整的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07java基于netty NIO的簡(jiǎn)單聊天室的實(shí)現(xiàn)
這篇文章主要介紹了java基于netty NIO的簡(jiǎn)單聊天室的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07MyBatis-Plus 如何實(shí)現(xiàn)連表查詢的示例代碼
這篇文章主要介紹了MyBatis-Plus 如何實(shí)現(xiàn)連表查詢的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08深入探討Java超時(shí)自動(dòng)取消的實(shí)現(xiàn)方案
在復(fù)雜的分布式系統(tǒng)中,超時(shí)控制是保障系統(tǒng)穩(wěn)定性和可用性的關(guān)鍵機(jī)制,本文將深入探討Java中實(shí)現(xiàn)超時(shí)自動(dòng)取消的多種方案,希望對(duì)大家有所幫助2024-11-11