###前提・実現したいこと
2分探索後、出力するデータの身長が0表示され、困っています。
期待出力)
データ:松富明雄 169 0.8
このソースだと出力)
データ:松富明雄 0 0.8
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
java
1import java.util.Arrays; 2import java.util.Scanner; 3import java.util.Comparator; 4class En3_7{ 5 static class PhyscData{ 6 private String name; 7 private int height; 8 private double vision; 9 public PhyscData(String name, int heigth, double vision){ 10 this.name = name; this.height = height; this.vision = vision; 11 } 12 public String toString(){ 13 return name + " " + height + " " + vision; 14 } 15 public static final Comparator<PhyscData> VISION_ORDER = new VisionOrderComparator(); 16 private static class VisionOrderComparator implements Comparator<PhyscData>{ 17 public int compare(PhyscData d1, PhyscData d2){ 18 return (d1.vision > d2.vision) ? 1 : (d1.vision < d2.vision) ? -1 : 0; 19 } 20 } 21 } 22 public static void main(String[] args){ 23 Scanner stdIn = new Scanner(System.in); 24 PhyscData[] x = { 25 new PhyscData("赤坂忠雄", 162, 0.3), 26 new PhyscData("長浜良一", 168, 0.4), 27 new PhyscData("加藤富明", 173, 0.7), 28 new PhyscData("松富明雄", 169, 0.8), 29 new PhyscData("浜田哲明", 174, 1.2), 30 new PhyscData("武田信也", 171, 1.5), 31 new PhyscData("斉藤正二", 175, 2.0), 32 }; 33 System.out.print("視力いくつの人を探しますか:"); 34 double vision = stdIn.nextDouble(); 35 int idx = Arrays.binarySearch(x, new PhyscData("", 0, vision), PhyscData.VISION_ORDER); 36 if(idx < 0) 37 System.out.println("その値の要素は存在しません。"); 38 else{ 39 System.out.println("その値はx[" + idx + "]にあります。"); 40 System.out.println("データ:" + x[idx]); 41 } 42 } 43}
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/16 03:31
2017/09/16 04:06