如果我输入正确的值(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