我想从控制台获取输入并使用数字执行计算。当我从控制台收到一些ref值,例如" 10"(在这种情况下)时,我想停止接收数组到数组中。一旦我在控制台中输入10,阵列就必须结束,并且数组中的值必须相乘。我已经尝试过将其作为一个程序,但是对于正在执行的产品,我得到的是0。
public class Scrap {
private static int i;
private static double[] as;
public static void main(String[] args)
{
as=new double[100];
for(i=0;i<as.length;i++)
{
as[i]=dscan();
if(as[i]==10)
break;
}
double d=1;
for(i=0;i<as.length;i++)
{
d=d*as[i];
}
System.out.println("Product is :"+(d/10));
}
public static double dscan()
{
System.out.print(" : ");
return new Scanner(System.in).nextDouble();
}
}
答案 0 :(得分:0)
这段代码有效......我改进了它使用List而不是数组,因为一开始你不知道你会有多少输入...如果你什么都不懂,只要问......
public class Scrap {
private static int i;
private static ArrayList<Double> al = new ArrayList<Double>();
public static void main(String[] args) {
while (true) {
double d = dscan();
if (d != 10) {
al.add(d);
}else{
break;
}
}
double d = 1;
for (i = 0; i < al.size(); i++) {
d = d * al.get(i);
}
System.out.println("Product is :" + (d / 10));
}
public static double dscan() {
System.out.print(" : ");
return new Scanner(System.in).nextDouble();
}
}
答案 1 :(得分:0)
在你的情况下as=new double[100];
将使用100个零初始化数组(原始double的默认值)和as.length
将始终返回100(初始化数组的大小)而不是有效元素的数量,因此如果输入少于100个值,则其余值将保留为零,这将用于乘法..
要使其工作,您需要计算单独变量中有效元素的数量,然后使用它来限制数组窗口或Matej sugest使用动态大小的集合。