初心者です。よろしくお願いします。
今回、可変長配列「ArrayList」を、メソッドの中で呼び出してある動きを目指しているのですが、うまくいきません。書いたコードを載せます。
java
1import java.util.Scanner; 2import java.util.ArrayList; 3import java.util.*; 4 5class Nibun{ 6 7 static int key = 0; 8 9 public static void main(String[] args){ 10 11 Scanner stdIn = new Scanner(System.in); 12 ArrayList<Integer> numbers = new ArrayList<Integer>(); 13 14 System.out.print("データを入力してください。"); 15 System.out.println(" 二分探索を行う場合は88888を入力してください。"); 16 17 while(true){ 18 19 20 int n = stdIn.nextInt(); 21 //データを受け取るnは無限ループしないと何度もデータを受け取れない 22 23 if(n != 88888){ 24 25 26 if(numbers.contains(n)){ 27 28 int num = numbers.indexOf(n); 29 numbers.remove(num); 30 31 } 32 else { 33 34 numbers.add(n); 35 Collections.sort(numbers); 36 37 } 38 39 System.out.println("\n\n\n\n\n"); 40 System.out.println(numbers); 41 42 /* if(n == 555){ 43 44 System.out.print(numbers.get(2)); 45 46 }*/ 47 48 49 } 50 else if(n == 88888){ 51 System.out.println("調べたいkeyを打ち込んでください。"); 52 key = stdIn.nextInt(); 53 search(key); 54 55 56 } 57 } 58} 59static int search(int key){ 60 61 int low = 0; 62 int high = numbers.length-1; 63 while(low <= high){ 64 int middle = (low + high) / 2; 65 if(key == numbers.get(middle)){ 66 return (middle + "番目にありました。"); 67 } 68 else if(key < numbers.get(middle)){ 69 high = middle - 1; 70 } 71 else { 72 low = middle + 1; 73 } 74 } 75 return null; 76} 77} 78
エラー表示はこのようになります。
java
1Nibun.java:62: エラー: シンボルを見つけられません 2 int high = numbers.length-1; 3 ^ 4 シンボル: 変数 numbers 5 場所: クラス Nibun 6Nibun.java:65: エラー: シンボルを見つけられません 7 if(key == numbers.get(middle)){ 8 ^ 9 シンボル: 変数 numbers 10 場所: クラス Nibun 11Nibun.java:66: エラー: 不適合な型: Stringをintに変換できません: 12 return (middle + "番目にありました。"); 13 ^ 14Nibun.java:68: エラー: シンボルを見つけられません 15 else if(key < numbers.get(middle)){ 16 ^ 17 シンボル: 変数 numbers 18 場所: クラス Nibun 19Nibun.java:75: エラー: 不適合な型: <null>をintに変換できません: 20 return null; 21 ^ 22エラー5個 23
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/14 06:43