頁:
[1]
問一下這個程式碼為什在jcreator會有錯誤
使用的程式是jc LE 4.50import java.io.*;
import java.util.*;
//在jcreator會出錯 cmd DOS 指令 notepade++卻不會錯
class test
{
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] test = new int;
System.out.println("請輸入"+test.length+"個人的分數:");
for(int i=0; i<test.length; i++){
String str = br.readLine();
test = Integer.parseInt(str);
}
for(int s=0; s<test.length-1;s++){ //主要是靠這一段進行排序,當s=0時,t=1。
for(int t=s+1; t<test.length; t++){
if(test > test){ //假設T>S成立
int tmp = test; //把T的值存到tmp
test = test; //把S的值存到T
test = tmp; //把tmp值的值放到S
}
}
}
for(int j=0; j<test.length; j++){
System.out.println("第"+(j+1)+"名的分數是"+test+"分。");
}
}
}
--------------------Configuration: <Default>--------------------
請輸入5個人的分數:
20
30
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at test.main(test.java:14)
Process completed.
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> 本帖最後由 復仇刺 於 2021-2-1 09:53 AM 編輯
改成.trim()一樣dos、notepade++編譯 還是過 但jcreator還是死掉
輸入
10
20
然後就exception Q.Q....
是說只是想知道一下為什編輯器dos notepade都能過就jc不能= ="
先說一下程式碼不是我寫的...只是在爬文尋找自己想寫的東西找到這原碼debug才發現jcreator會不正常= ="
只能先這樣了QAQ....
import java.io.*;
import java.util.*;
class test
{
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] test = new int;
System.out.println("請輸入"+test.length+"個人的分數:");
for(int i=0; i<test.length; i++){
String str = br.readLine();
test = Integer.parseInt(str.trim());
}
for(int s=0; s<test.length-1;s++){ //主要是靠這一段進行排序,當s=0時,t=1。
for(int t=s+1; t<test.length; t++){
if(test > test){ //假設T>S成立
int tmp = test; //把T的值存到tmp
test = test; //把S的值存到T
test = tmp; //把tmp值的值放到S
}
}
}
for(int j=0; j<test.length; j++){
System.out.println("第"+(j+1)+"名的分數是"+test+"分。");
}
}
}
//為什我的文章上會有刪除線......
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 本帖最後由 復仇刺 於 2021-2-3 12:44 AM 編輯
復仇刺 發表於 2021-1-31 11:52 PM static/image/common/back.gif
改成.trim()一樣dos、notepade++編譯 還是過 但jcreator還是死掉
輸入
10
還是死掉-.-但看編譯狀態 是有Process completed. ,代表語法跟寫法基本上無誤吧......但為什輸入5個人的成績,就只能到兩個人就跳出了= ="
一樣dos 跟notepade++還是過= =" 輸出也是正確-.-...好吧 可能軟體問題.......Q~Q...(....
參考了
OCPJP 的字串轉數字https://magiclen.org/ocpjp-bufferedreader/
import java.io.*;
import java.util.*;
class test
{
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] test = new int;
System.out.println("請輸入"+test.length+"個人的分數:");
for(int i=0; i<test.length; i++){
int str = Integer.parseInt(br.readLine());//字串轉數字
test = str;
}
for(int s=0; s<test.length-1;s++){ //主要是靠這一段進行排序,當s=0時,t=1。
for(int t=s+1; t<test.length; t++){
if(test[ t ] > test){ //假設T > S成立
int tmp = test[ t ]; //把 T 的值存到tmp
te s t[ t ] = test; //把S的值存到T
te st = tmp; //把tmp值的值放到S
}
}
}
for(int j=0; j<tes t.length; j++){
System.out.println("第"+( j+1)+"名的分數是"+test+"分。");
}
}
編譯狀態
--------------------Configuration: <Default>--------------------
請輸入5個人的分數:
10
20
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at test.main(test.java:16)
Process completed ...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> [ s ] 和 [ i ] (裡面沒空格) 這是論壇的代碼,變成刪除線和斜體
請使用 [ code ] [/ code] (去掉裡面空格)
我用 Eclipse 跑沒問題
原因應該是 JCreator 處理 readLine() 有問題
Windows 輸入按 Enter 換行的時候,是 '\r' 和 '\n' 兩個字元
其他平台是 '\r' 或是 '\n'
readLine() 這個函式的說明是遇到 '\r'、'\n'、或是 '\r' + '\n'
JCreator 應該是沒使用平台的 '\r' + '\n'
而是 '\r' 和 '\n' 分開認了
所以
20\r\n
30\r\n
輸入這個的時候
一開始的 20\r 被轉成 20
但接下來是 \n,也就是沒數字可以轉,於是就噴出例外...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁:
[1]