1. 程式人生 > >Java的輸入和輸出遇到的一點問題

Java的輸入和輸出遇到的一點問題

() main public 可用 util clip 回收 char 錯誤

 1 //package com.yunying.test;
 2 import java.io.Console;
 3 import java.util.Scanner;
 4 //學習io
 5 public class LearnIO {
 6      public static void main(String args[])
 7      {
 8          @SuppressWarnings("resource")
 9          Scanner in = new Scanner(System.in);
10          System.out.println("請輸入你的年齡");
11 String name = in.nextLine(); 12 System.out.println(name); 13 System.out.println("請輸入密碼"); 14 Console cons= System.console(); 15 char[] passwd = cons.readPassword(); 16 System.out.println("輸入的密碼是"+passwd); 17 in.close(); 18 } 19 }
問題1:這個時候eclipse會彈出一個警告:“Resource leak: ‘in‘ is never closed” 查了下api,Scanner存在一個close方法,添加in.close;問題解決。 其實eclipse給出了解決方案,@SuppressWarnings(“resource”),添加資源泄漏的警告,如果不關閉可能會存在資料浪費。 “When a Scanner is closed, it will close its input source if the source implements the Closeable interface.” 意思是當Scanner關閉時,system.in就會被關閉,system.in是一個常量流,所以使用close()涉及到資源的回收,
一般是在main的最後去關閉scanner。 問題2: 執行以上代碼時,拋出了空指針異常
請輸入你的年齡
20
20
請輸入密碼Exception in thread "main" 
java.lang.NullPointerException
at com.yunying.test.LearnIO.main(LearnIO.java:16)

原因是因為Console只支持在控制臺中調用,不支持在ide中調用,其中的原理是 :只有從終端ternimal中啟動jvm,才會有可用的console。

此時去終端中執行Java LearnIO時報錯。

錯誤: 找不到或無法加載主類 LearnIO

註釋首行包名問題解決

Java的輸入和輸出遇到的一點問題