Java简介-什么&x27;怎么了?
首先,我是新来的。所以,我能够在所有内容都为int时运行它,但是由于某种原因,将其更改为double,我只能输入第一个值,并且它会出错。我不明白为什么我不能这样做:Java简介-什么&x27;怎么了?,java,arrays,int,double,Java,Arrays,Int,Double,首先,我是新来的。所以,我能够在所有内容都为int时运行它,但是由于某种原因,将其更改为double,我只能输入第一个值,并且它会出错。我不明白为什么我不能这样做: int datVal = Integer.parseInt(inNum); double [] iOne; iOne = new double[datVal]; 在我运行它或调试它之前没有错误。以下是我得到的: import java.util.Arrays; import ja
int datVal = Integer.parseInt(inNum);
double [] iOne;
iOne = new double[datVal];
在我运行它或调试它之前没有错误。以下是我得到的:
import java.util.Arrays;
import javax.swing.JOptionPane;
public class arStats2 {
public static void main(String[] args) {
double med, men, min, max;
String inNum = JOptionPane.showInputDialog("Enter the number of data values:");
int datVal = Integer.parseInt(inNum);
double [] iOne;
iOne = new double[datVal];
double [] iTwo;
iTwo = new double[datVal];
int index=0;
for (index=0; index < iOne.length; index++) {
String value = JOptionPane.showInputDialog("Input a data value:");
int valIn = Integer.parseInt(value);
iOne[index] = valIn;
}
System.arraycopy(iOne, 0, iTwo, 0, iOne.length);
Arrays.sort(iOne);
String out1 = "Sorted data: ";
for (int i=0; i<iOne.length; i++) {
out1 = out1 +iOne[i]+"";
}
out1 = out1 +"\n";
String out2 = "Original data: ";
for (int i2=0; i2<iTwo.length; i2++) {
out2 = out2 +iTwo[i2] + "";
}
out2 = out2 +"\n";
med = median(iOne);
men = mean(iTwo);
max = computeMax(iOne);
min = computeMin(iOne);
JOptionPane.showMessageDialog(null, out2 +out1 +"Min Value: " +min +"\n"
+"Max value: " +max +"\n"
+"Median value: " +med +"\n"
+"Mean value: " +men +"\n");
}
public static double median(double[] iOne) {
double med;
int index, indexHi, indexLo;
if ((iOne.length %2) !=0) {
index = iOne.length / 2;
med = iOne[index];
}
else {
indexHi = iOne.length / 2;
indexLo = indexHi = 1;
med = (iOne[indexLo] + iOne[indexHi])/2;
}
return med;
}
public static double mean(double[] iOne) {
double sum = 0;
for (int i = 0; i < iOne.length; i++) {
sum += iOne[i];
}
return sum / iOne.length;
}
public static double computeMax(double[] iOne) {
double max = (iOne.length - 1);
return max;
}
public static double computeMin(double[] iOne) {
double min;
min = iOne[0];
return min;
}
}
您需要在此处将值解析为double:
for (index=0; index < iOne.length; index++) {
String value = JOptionPane.showInputDialog("Input a data value:");
double valIn = Double.parseDouble(value); // this line is changed
iOne[index] = valIn;
}
for(index=0;index
这将使它能够使用双值,但正如ValarDohaeris所指出的,代码中还有其他问题。如果您能更具体地说明错误,这将非常有用。 然而,我认为代码中有两部分是错误的:
indexLo = indexHi = 1;
应该是
indexLo = indexHi - 1;
在computeMax()
中,您应该有:
double max = iOne[iOne.length - 1];
但由于某些原因,将其更改为双精度,我只能输入第一个
值和it错误
原因是datVal=Integer.parseInt(inNum)需要一个整数,而您正在向它传递一个包含double的字符串,这将导致抛出NumberFormatException
您应该用
try{}catch{}
块来围绕这个问题,并采取一些措施。错误说明了什么?如果您研究运行时与编译时,可能会帮助您更好地理解错误。我用错误更新了问题。很抱歉在发帖时排除了这一点!我没有投反对票!我不知道这是对还是错!在发布这篇文章之前,我尝试将其解析为double。当我这样做时,它会提示我:iOne=newdouble[datVal];要将datVal更改为int,我复制粘贴了您的代码并添加了修改。输出似乎不正确,但代码中没有针对我的警告或错误。因此,您所做的操作如下:double-med,men,min,max;String inNum=JOptionPane.showInputDialog(“输入数据值的数量:”);double datVal=double.parseDouble(inNum);iOne[索引]=datVal;双[]离子;iOne=新的双精度[datVal]代码>对不起。就像我说的,我是个新手。我给我的教授发了三封电子邮件,都没有回复。
double max = iOne[iOne.length - 1];