如果我輸入正確的值(int值),該程序工作正常。但是,當我輸入字符或任何其他錯誤的值時,它會顯示錯誤的輸入消息並再次調用main方法。唯一的問題是在調用main方法並輸入正確的輸入後,它會打印出額外的數據,爲什麼?調用main方法後的附加值
import javax.swing.JOptionPane;
public class TestPolyVal {
public static void main(String[] args){
int xValue = 0;
String value = JOptionPane.showInputDialog(null, "What is the value of X");
try{
xValue = Integer.parseInt(value);}
catch (NumberFormatException e){
JOptionPane.showMessageDialog(null,"Wrong input. Please input only integer values.");
TestPolyVal.main(args);
}
int[] intArray = new int[20] ;
for (int i = 0; i < 20; i ++){
intArray[i] = 2;}
System.out.println(calculateBruteForce(intArray,xValue));
System.out.println("0");
System.out.println(calculateHorner(intArray,xValue));}
static int calculateBruteForce(int[] a, int b){
int sum = 0 ;
for (int i = 0; i < 20; i ++){
sum +=a[i]*powerCalc(b,i);}
return sum;}
static int powerCalc(int c, int d){
int powerValue = c;
if (d==0){
powerValue = 1;}
else if (d==1){
powerValue = c;}
else if (d>1){
for (int i = 1; i<d;i++){
powerValue = powerValue*c;}}
return powerValue;}
static int calculateHorner(int[] e, int f){
int acc = e[e.length-1];
for(int i = e.length-2; i >= 0; i--){
acc = (acc * f)+ e[i];}
return acc;}
}
你能告訴我它返回什麼嗎? – user3443390 2014-09-04 19:33:24
這是一個無效的方法,所以當我返回它返回沒有正確的? – user3443390 2014-09-04 19:34:18
沒錯。由於它的類型是'void',所以你不要在'return'中使用任何值。它會返回到調用方法的地方。如果是程序的開始,程序將終止。 – Keppil 2014-09-04 19:38:20