要把輸入的數字反轉輸出 我是這樣寫的
package studentdatademo;
public class AntiNumbers
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println(antiNum(-23) );
}
public static int antiNum (int x)
{
if (x<0)
{
char[] numArray=new StringBuffer(x).deleteCharAt(0).toString().toCharArray();
char[] cRet = new char[numArray.length];
int j =0;
for(int i =numArray.length-1;i<0;i--)
{
cRet[j]=numArray[i];
j++;
}
int ansNum = Integer.valueOf(String.valueOf(cRet));
ansNum =Math.negateExact(ansNum);
return ansNum ;
}else if(x>0)
{
char[] numArray=new StringBuffer(x).toString().toCharArray();
char[] cRet = new char[numArray.length];
int j =0;
for(int i =numArray.length-1;i<0;i--)
{
cRet[j]=numArray[i];
j++;
}
int ansNum = Integer.valueOf(String.valueOf(cRet));
return ansNum ;
}
else
{
int ansNum=0;
return ansNum ;
}
}
}
付100求解答~ 深知專業要付錢 但小弟錢錢有限
感謝各位 小弟完成新手任務後向各位回覆
試著去看Exception給你的訊息跟IDE環境提供的建構說明吧
一執行完第一個遇到的錯誤就是NegativeArraySizeException
簡單說就是Array的長度不能為負的
錯誤指向這一行
char[] numArray=new StringBuffer(x).deleteCharAt(0).toString().toCharArray();
如果你仔細看建構說明
Java Doc
你傳int給他的時候int代表的作用如下
StringBuffer(int capacity)
Constructs a string buffer with no characters in it and the specified initial capacity.
所以如果你是想把數字轉入StringBuffer
char[] numArray=new StringBuffer().append(x).deleteCharAt(0).toString().toCharArray();
再來就會遇到 NumberFormatException
內容物亂碼無法轉成數字, 這個問題就上面小魚講的問題囉
不過數字出來是-32 這是你要的?
試著把重覆的程式組合在一起,不然會不好維護喔..
for(int i =numArray.length-1;i<0;i--)
這甚麼...
改成這樣看看
for(int i =numArray.length-1;i>=0;i--)
你可能需要重新理解一下for迴圈...
如果結果是你要的
請捐款100元至創世基金會
貼上收據
程式碼隨後貼上
謝謝~已完成捐款
不是「已解決」了嗎
public class HelloWorld{
public static void main(String []args){
System.out.println(antiNum(23) );
System.out.println(antiNum(-23) );
}
public static int antiNum (int x) {
if (x<0) {
char[] numArray = ("" + x).toCharArray();
char[] cRet = new char[numArray.length-1];
int j =0;
for(int i =numArray.length-1;i>0;i--) {
cRet[j]=numArray[i];
j++;
}
int ansNum = Integer.valueOf(String.valueOf(cRet));
ansNum =Math.negateExact(ansNum);
return ansNum ;
} else if(x>0) {
char[] numArray = ("" + x).toCharArray();
char[] cRet = new char[numArray.length];
int j =0;
for(int i=numArray.length-1;i>=0;i--) {
cRet[j]=numArray[i];
j++;
}
int ansNum = Integer.valueOf(String.valueOf(cRet));
return ansNum ;
}
else {
int ansNum=0;
return ansNum ;
}
}
}