2017-04-04 9 views
1

私の教科書の例からこのコードを変更して、二重配列と互換性があります。 「:intにダブルから可能な非可逆変換互換性のない型を」:二重から可能な非可逆変換エラーコードの互換性のないタイプ:doubleからintへの不可逆変換

temp = numberList[max];  
numberList[max] = numberList[numberList.length - i - 1]; 
numberList[numberList.length - i - 1] = temp; 

if (numberList[i] > numberList[index]) 

j = i; 
temp = numberList[i]; 

ものはエラー」互換性のない型を示し、私はエラーを修正するかどうかはわからないコード内のいくつかの場所があります。 int。 "

私はindexOfLargestElementの最初の使用でエラーを受け取っています。「シンボルが見つかりません」。

package week5; 
import java.util.Arrays; 
/** 
* 
* @author meowens 
*/ 
public class Week5 { 

/** 
* @param args the command line arguments 
*/ 

public static void selectionSort(double [] numberList) { 

    double temp; 
    double max; 

    for (double i = 0; i < numberList.length - 1; i++) 
    { 
     max = indexOfLargestElement(numberList, numberList.length - i); 

     temp = numberList[max]; 
     numberList[max] = numberList[numberList.length - i - 1]; 
     numberList[numberList.length - i - 1] = temp; 
    } 
} 
private static double indexOfLarggestElement(double [] numberList, double size) 
{ 
    double index = 0; 
    for (double i = 1; i < size; i++) 
    { 
     if (numberList[i] > numberList[index]) 
      index = i; 
    } 
    return index; 
} 
public static void insertionSort (double [] numberList) 
{ 
    int j, temp; 

    for (double i = 1; i < numberList.length; i++) 
    { 
     j = i; 
     temp = numberList[i]; 

     while (j != 0 && numberList[j - 1] > temp) 
     { 
      numberList[j] = numberList[j - 1]; 
      j--; 
     } 

     numberList[j] = temp; 
    } 
    // TODO code application logic here 



    // assigning values 
    numberList[0] = 53.5; 
    numberList[1] = 60.3; 
    numberList[2] = 96.2; 
    numberList[3] = 53.3; 
    numberList[4] = 56.4; 
    numberList[5] = 52.7; 
    numberList[6] = 76.4; 
    numberList[7] = 77.5; 
    numberList[8] = 71.0; 
    numberList[9] = 78.2; 

    numberList[10] = 65.2; 
    numberList[11] = 59.3; 
    numberList[12] = 80.5; 
    numberList[13] = 92.1; 
    numberList[14] = 85.7; 
    numberList[15] = 78.7; 
    numberList[16] = 66.2; 
    numberList[17] = 88.8; 
    numberList[18] = 50.2; 
    numberList[19] = 73.4; 

    } 

}

私はまだコードをデバッグして校正する機会を持っていなかったので、私は見つけるためには至っていない他の単純なエラーがあると確信していますし、私も非常にJavaへの新しいプログラミング午前一般的です。

ありがとうございました!

+0

「indexOfLargestElement()」の「シンボルが見つかりません」は、その関数が存在しないことを意味します。 "可能な不可逆変換"は、 'double'を完全な' double'値を含まない 'int'変数に格納していることを意味します。 – David

答えて

0

一般的な問題は、doubleintの値を数か所で混合していることでした。あなたのアレイのタイプはdouble[]でした。したがって、その要素にアクセスするたびに、インデックスはintのタイプであり、タイプdoubleの値にアクセスします。ループとテンポラリ変数を変更しました。

indexOfLarggestElementという名前のメソッドにも、私はindexOfLargestElementに変更されたタイプミスがありました。

package week5; 

import java.util.Arrays; 

/** 
* 
* @author meowens 
*/ 
public class Week5 { 

    /** 
    * @param args the command line arguments 
    */ 

    public static void selectionSort(double [] numberList) 
    { 
     double temp; 
     int max; 

     for (int i = 0; i < numberList.length - 1; i++) 
     { 
      max = indexOfLargestElement(numberList, numberList.length - i); 

      temp = numberList[max]; 
      numberList[max] = numberList[numberList.length - i - 1]; 
      numberList[numberList.length - i - 1] = temp; 
     } 
    } 

    private static int indexOfLargestElement(double [] numberList, double size) 
    { 
     int index = 0; 
     for (int i = 1; i < size; i++) 
     { 
      if (numberList[i] > numberList[index]) 
       index = i; 
     } 
     return index; 
    } 

    public static void insertionSort (double [] numberList) 
    { 
     int j; 
     double temp; 

     for (int i = 1; i < numberList.length; i++) 
     { 
      j = i; 
      temp = numberList[i]; 

      while (j != 0 && numberList[j - 1] > temp) 
      { 
       numberList[j] = numberList[j - 1]; 
       j--; 
      } 

      numberList[j] = temp; 
     } 
     // TODO code application logic here 

     // assigning values 
     numberList[0] = 53.5; 
     numberList[1] = 60.3; 
     numberList[2] = 96.2; 
     numberList[3] = 53.3; 
     numberList[4] = 56.4; 
     numberList[5] = 52.7; 
     numberList[6] = 76.4; 
     numberList[7] = 77.5; 
     numberList[8] = 71.0; 
     numberList[9] = 78.2; 

     numberList[10] = 65.2; 
     numberList[11] = 59.3; 
     numberList[12] = 80.5; 
     numberList[13] = 92.1; 
     numberList[14] = 85.7; 
     numberList[15] = 78.7; 
     numberList[16] = 66.2; 
     numberList[17] = 88.8; 
     numberList[18] = 50.2; 
     numberList[19] = 73.4; 
    } 
} 
0
​​

あなたはそれゆえ配列によってインデックスにbyteshortint別に問題は他のタイプを使用することはできません。 char値は、単数値昇格の対象となり、intの値になるため、インデックス値として使用することもできますが、インデクサとしてcharの値を使用することは非常に珍しいです。

doubleタイプ変数をタイプ変数intに変更してください。doubleタイプ変数を使用して配列にインデックスを付ける必要があります。

Javaドキュメント

配列はint型の値でインデックス化されなければなりません。短期、バイト、またはchar値は また、彼らは単項 数値昇格(5.6.1)にさらされているため、インデックス値として使用し、int型の値になることができます。

長いインデックス値 を持つ配列コンポーネントにアクセスしようとすると、コンパイル時にエラーが発生します。

関連する問題