2017-02-17 28 views
-3

我作出了这样的程序:Java。数组[双变量]

Scanner sc = new Scanner(System.in); 
double n = sc.nextDouble(); 
double[]d = new double[n]; 

我不能执行这个,因为我得到这个错误:

Type mismatch: cannot convert from double to int

我知道我可以投它为int为(int),但问题是,n可以是一个非常大的号码(最多10^6)

我怎样才能让一个数组是这样的:

new array[variable which can be big (up to 10^6)] 
+5

10⁶是不是一个很大的数字,你不能有一个具有小数量的数组的元素。你会在“double [1.5]”中存储多少个数字?使用整数来创建数组。 – Kayaman

+4

为什么你首先要求“双”?为什么不使用'int'?一个数组有10.5个元素是没有意义的... –

+0

一个'int'变量可以存储多达2^31个正值(〜20亿)。具有20亿个元素的双打阵列将占用16 GB的RAM。这对你足够吗? :) – Zefick

回答

1

就这样做:

int n = sc.nextInt(); 

其实int是大到足以容纳10^6:

int: 32 bit    Min = -2 147 483 648     Max = +2 147 483 647 
+0

哦..我错了,可能是因为我的程序没有为比1042更大的数字工作..好吧,谢谢,我会检查它。 – Gabi123

1

Java的int变量的最大值是2147483647 (2^31-1)。无论如何,它大于10^6,我不相信你需要一个超过2147483647值的数组(并且你不能)。

另外,正如其他人提到的那样,用数组来表示数组是没有意义的。 10.5值。应该总是使用Int类型。

所以只要扫描整数

int n = sc.nextInt(); 
0
在Java中

,数组长度数据类型必须是int。 无论如何,对于价值高达10^6 int是足够大的。 所以,你可以决定使用此代码:

import java.util.Scanner; 

public class Stack{ 
    public static void main(String[] args){ 
     Scanner sc = new Scanner(System.in); 
     int n = sc.nextInt(); 
     double[] d = new double[n]; 
    } 
} 

在Java的int最大限值为2147483647。