第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

第一個(gè)輸入方法的Scanner.close()會(huì)對(duì)下一個(gè)輸入方法的Scanner.next()有影響,為什么?

老師,我有個(gè)問題。 我自己本節(jié)課的寫代碼的時(shí)候有兩個(gè)方法都調(diào)用了Scanner console = new Scanner(System.in); 然后都寫在了console.close()這句話,編譯報(bào)錯(cuò)說“?java.util.NoSuchElementException”。 當(dāng)我把第一個(gè)方法的console.close();這句話刪除后就正常了,請(qǐng)問在一個(gè)類的兩個(gè)不同的方法中分別

package?studentTest1;

import?java.util.HashMap;
import?java.util.Map;
import?java.util.Map.Entry;
import?java.util.Scanner;
import?java.util.Set;

public?class?MapTest?{

????public?Map<String?,?Student>?students;
????//構(gòu)造函數(shù)
????public?MapTest(){
????????students?=?new?HashMap<String,Student>();
????}
????//學(xué)生ID姓名添加函數(shù)
????public?void?input(){
????????int?i?=?0;
????????Scanner?scan?=?new?Scanner(System.in);
????????while(i?<?3){
????????????System.out.println("請(qǐng)輸入學(xué)生ID");
????????????String?ID?=?scan.next();
????????????Student?st?=?students.get(ID);
????????????if(?st?==?null){
????????????????System.out.println("請(qǐng)輸入學(xué)生姓名");
????????????????String?name?=?scan.next();
????????????????Student?S?=?new?Student(ID,name);
????????????????students.put(ID,S);
????????????????System.out.println("學(xué)生:"?+?students.get(ID).name?+?"已添加成功");
????????????i++;????
????????????}else{
????????????????System.out.println("改學(xué)生姓名已被占用");
????????????????continue;
????????????}
????????}????
????????scan.close();?//(就是這里的問題,如果把這句話刪除,那刪除函數(shù)就可以正常進(jìn)行,但是加上這句話有錯(cuò)么,為什么會(huì)對(duì)刪除函數(shù)中的Scanner輸入函數(shù)有影響呢?)
????}
//?鍵的測(cè)試函數(shù)????
????public?void?testKey(){
????????Set<String>?keySet?=?students.keySet();
????????//學(xué)生容量
????????System.out.println("總共有"?+?students.size()?+?"個(gè)學(xué)生");
????????for(?String?stuId?:?keySet){
????????????Student?st?=?students.get(stuId);
????????????if(st?!=?null){
???????????????System.out.println("學(xué)生"?+?st.name);??????????????????
????????????}
????????}
????}
//?刪除測(cè)試函數(shù)????
????public?void?testRemove(){
????????Scanner?scan?=?new?Scanner(System.in);
????????while(true){
????????????System.out.println("請(qǐng)輸入需要?jiǎng)h除的學(xué)生ID");
????????????String?ID?=?scan.next();
????????????Student?newst?=?students.get(ID);
????????????if(newst?==?null){
????????????????System.out.println("請(qǐng)輸入需要?jiǎng)h除的學(xué)生ID");
????????????????continue;
????????????}
????????????students.remove(ID);
????????????System.out.println("成功刪除的學(xué)生"?+?newst.name);
????????????//
????????????break;
????????}????????
????}
????
????//使用entrySet來遍歷Map
????public?void?testEntrySet(){
????????Set<Entry<String,Student>>?setMap?=?students.entrySet();?
????????for(Entry<String,Student>?entry?:?setMap){
????????????System.out.println("學(xué)生"?+?entry.getKey()?+?entry.getValue().name);
????????}
????}

}

實(shí)例化兩個(gè)輸入類,他第一個(gè)Scanner類的console.close(),會(huì)對(duì)第二個(gè)Scanner類的 Scanner.next()有影響,這是為什么呢?

正在回答

3 回答

?//學(xué)生ID姓名添加函數(shù)
????public?void?input(){
????????int?i?=?0;
????????Scanner?scan?=?new?Scanner(System.in);//這行應(yīng)該放入循環(huán)里面
????????
????????while(i?<?3){
????????????System.out.println("請(qǐng)輸入學(xué)生ID");
????????????//放在這里,每次輸入鍵盤值前初始化一下,重新輸入,不然一直是一開始輸入的值。
????????????String?ID?=?scan.next();
????????????Student?st?=?students.get(ID);

第二季作業(yè)碰到過這種情況,我是這樣解決的,還有很多其他辦法解決

0 回復(fù) 有任何疑惑可以回復(fù)我~

我與你有相同疑問

你要的答案在這里:

http://bbs.csdn.net/topics/390788856

0 回復(fù) 有任何疑惑可以回復(fù)我~

因?yàn)閮蓚€(gè)Scanner使用的是同一個(gè)輸入流

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

第一個(gè)輸入方法的Scanner.close()會(huì)對(duì)下一個(gè)輸入方法的Scanner.next()有影響,為什么?

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)