2017-02-17 30 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。