本文目錄一覽:
- 1、問一個java問題
- 2、java問題
- 3、一個JAVA問題!
- 4、Java問題
- 5、問大家JAVA問題,問題如下?
問一個java問題
gp.go() 就是調用text對象的go()方法,go()方法返回值為void,錯誤提示也是告訴的你System.out.println()的參數不能為空,你把
System.out.println(text.go());
System.out.println(gp.go());
這兩句改成:
text.go();
gp.go();
就能正常輸出了
java問題
這裡直接把s賦值給readContent是有問題的,問題點如下:
假設文件有兩行
第一行
第二行
則讀取循環兩次,第一次s賦值給readContent,readContent的值為 “第一行”,然後又循環,讀取第二行,再次賦值,則readContent就會變成 “第二行”,第一行的值就丟失了;
這裡StringBuff的作用是把讀取到的內容連接起來成為一個字符串;
不過這裡的例子的確有問題,問題卻不在StringBuffer上,而在 s 變量上,s中間兩步是不必要的,循環內直接改成如下形式:
刪除s.getBytes()和new String
另外,除了以上問題,來總結下這段代碼的問題吧:
1、文件資源沒有釋放
2、在不涉及多線程的情況下,應使用StringBuilder類進行字符串拼接,而不是StringBuffer,因為StringBuilder更快(但是StringBuilder線程不安全,StringBuffer線程安全);
3、異常處理有問題,如果出現IO異常,就返回異常信息的字符串?那麼如何區分這個字符串是發生了異常還是從文件中讀取到的內容呢?這裡不應該返回字符串,而是直接聲明異常,有異常就向外拋,直到能處理的頂層程序處理。
基於以上幾點,修改代碼如下:
注意第27行,聲明本方法可能拋出 IOException 異常,稍後主程序將進行處理。另外注意第30行,創建InputStreamReader 的時候指定了文件編碼為utf8,以避免亂碼,你的文件如果存儲的是其他編碼類型,則會出現亂碼。
調用代碼如下:
getContent函數調用主程序
注意18行和21行,是分別處理正常情況和異常情況,當讀取異常時,將會調用第21行,打印異常信息;
整體代碼如下:
全部代碼
接下來我們看看代碼執行情況。
1、當我們要讀的文件不存在時,執行結果如下:
我們要讀的文件不存在時,拋出異常
看,當文件不存在時,拋出異常,並由異常處理程序捕獲和打印,你可以看到具體哪一行代碼出錯[getContent(App.java:29)],說明在App.java 文件中的getContent方法,文件的29行出錯。
2、那麼正常情況下呢?當然是輸出文件內容了,我們放一個有如下內容的文件在”D:\\file.txt”處:
要讀取的文件內容
執行結果如下:
正常情況下,輸出文件內容
最後,我不知道你看的是什麼書,是不是課本,但感覺質量不高,這裡給你推薦幾本,可以買來看看:
1、Head First java
2、菜鳥教程 Java
3、最權威的,自然是The Java® Language Specificati了
祝你學習之路順利
一個JAVA問題!
lz你一定要搞清楚數組的
下標的概念,從你定義的數組的元素來看,其實你的數組看起來是個二維數組(2行三列),但是java里實際是沒有多維數組的,我們暫且把這個數組當二維數組看。
從下面你的複製來看,第一行num[0][3]=1;已經訪問到第一行的第四個元素了,這是根本不存在的元素。因為數組的下標是從0開始的,num[0][3]=1;的3下標就是第四個元素。實際你的數組是一個int
[1][2]num的
數組。同理下面的
賦值語句都是有問題的。
第二行代碼num[1][4]=2;為第5個元素賦值了,其實根本沒有開闢內存空間。
第三行代碼num[2][4]=3;為第三行第五個元素賦值了,也是沒有開闢內存空間的。
我想看了上面的解釋你應該明白了吧,主要就是你沒弄清楚數組的下標問題,記住下表是從0開始的。
Java問題
這裡直接把s賦值給readContent是有問題的,問題點如下:
假設文件有兩行
第一行
第二行
則讀取循環兩次,第一次s賦值給readContent,readContent的值為 “第一行”,然後又循環,讀取第二行,再次賦值,則readContent就會變成 “第二行”,第一行的值就丟失了;
這裡StringBuff的作用是把讀取到的內容連接起來成為一個字符串;
不過這裡的例子的確有問題,問題卻不在StringBuffer上,而在 s 變量上,s中間兩步是不必要的,循環內直接改成如下形式:
刪除s.getBytes()和new String
另外,除了以上問題,來總結下這段代碼的問題吧:
1、文件資源沒有釋放
2、在不涉及多線程的情況下,應使用StringBuilder類進行字符串拼接,而不是StringBuffer,因為StringBuilder更快(但是StringBuilder線程不安全,StringBuffer線程安全);
3、異常處理有問題,如果出現IO異常,就返回異常信息的字符串?那麼如何區分這個字符串是發生了異常還是從文件中讀取到的內容呢?這裡不應該返回字符串,而是直接聲明異常,有異常就向外拋,直到能處理的頂層程序處理。
基於以上幾點,修改代碼如下:
注意第27行,聲明本方法可能拋出 IOException 異常,稍後主程序將進行處理。另外注意第30行,創建InputStreamReader 的時候指定了文件編碼為utf8,以避免亂碼,你的文件如果存儲的是其他編碼類型,則會出現亂碼。
調用代碼如下:
getContent函數調用主程序
注意18行和21行,是分別處理正常情況和異常情況,當讀取異常時,將會調用第21行,打印異常信息;
整體代碼如下:
全部代碼
接下來我們看看代碼執行情況。
1、當我們要讀的文件不存在時,執行結果如下:
我們要讀的文件不存在時,拋出異常
看,當文件不存在時,拋出異常,並由異常處理程序捕獲和打印,你可以看到具體哪一行代碼出錯[getContent(App.java:29)],說明在App.java 文件中的getContent方法,文件的29行出錯。
2、那麼正常情況下呢?當然是輸出文件內容了,我們放一個有如下內容的文件在”D:\\file.txt”處:
要讀取的文件內容
執行結果如下:
正常情況下,輸出文件內容
最後,我不知道你看的是什麼書,是不是課本,但感覺質量不高,這裡給你推薦幾本,可以買來看看:
1、Head First java
2、菜鳥教程 Java
3、最權威的,自然是The Java® Language Specificati了
祝你學習之路順利
問大家JAVA問題,問題如下?
要想不對k進行賦值,只能讓其做方法的參數,否則其他情況都需要進行賦值先
Java中運算符^表示的是邏輯異或,並不是乘方的意思,需調用Math.pow(a,b)來求平方
public static void computer(double k){
Math.sqrt((24*(1+Math.pow(k, 2))/Math.pow((3+Math.pow(k, 2)), 2))-
(4*36*(1+Math.pow(k, 2))/(3+4*Math.pow(k, 2))));
}
原創文章,作者:GFZNY,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/129747.html