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