0

この行:

arr[i] = sc.nextDouble();

このコードから:

public class z01 { 
  public static void main(String[] args) { 
    @SuppressWarnings("resource") 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter array size: "); 
    int n = sc.nextInt(); 
    double[] arr = new double[n]; 
    double min = 0; 
    for(double i = 0; i <n; i++){ 
      System.out.println("Enter element " + (i + 1)); 
      arr[i] = sc.nextDouble(); 
      if(i%3 == 0 && i <= min){ 
        min = i; 
      } 
    } 
    if(min != 0){ 
      System.out.println("The smallest number divisible by 3 is" + min); 
    } else { 
      System.out.println("No number is divisible by 3"); 
    } 
  } 
}

次の警告が表示されます。

Type mismatch: cannot convert from double to int 

Javaでのユーザー入力をdouble型にするにはどうすればよいですか?

4

3 に答える 3

3

ここでの問題は、おそらく配列 arr が int 型であることです。そのため、そのエラーが発生します。次のように arr を定義して、再試行します (x は目的の次元)。

double arr[] = new double[x];

問題は、 for ループをタイプにする必要があるのにi、 for ループをタイプに設定したことですdoubleint

于 2012-08-05T22:53:18.627 に答える
0

コード内に次のエラーがあることに気付きました:

  • double iに配列インデックスを読み込むときに、配列インデックスとして for ループでa を使用していますint n。それが Type Mismatch エラーの原因です。配列インデックスは typeintでなければならないためarr[i]、渡そうとしているのはarr[double]where のみarr[int]がサポートされています。

  • 入力したすべての値が負でない限り、新しい最小値で再割り当てしたい場合は、から始めるmin必要があります。Double.MAX_VALUEそれに応じて必ず変更してくださいif (min != 0) {

于 2012-08-06T10:33:09.867 に答える
0

1 つの方法は、try catch 例外を使用することです。

try {
     double var = sc.nextDouble();
} 
catch(TypeMismatchException ex) {
     System.err.println("try again, wrong type");
}

基本的に、値を double に格納するときにエラーが発生した場合は、catch ステートメントが実行され、ユーザーに再度入力を求めることができます。

于 2012-08-05T22:54:30.297 に答える