IndexOutOfBounds problem
amani • منذ 5 سنوات
import java.util.*;
import java.util.ArrayList;
public class Shortestdistance {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
System.out.print("How many points are there?");
int x=scn.nextInt();
double ShortestDistances=0.0;
Point [] points = new Point[x];
System.out.println("Enter each point as x y, followed by 'Enter'.");
for(int i =0; i<points.length; i++)
{
points[i] = new Point(scn.nextDouble(), scn.nextDouble());
scn.nextLine();
}
ArrayList<Double> dis = new ArrayList<Double>(x);
dis =calculateShortestDistances(points);
for(int i =0; i<dis.size(); i++){
System.out.println("The shortest Distances is: "+dis.get(i));
}
}//end main
public static ArrayList<Double> calculateShortestDistances(Point [] p) {// start method calculateShortestDistances
double distance;
ArrayList<Double> D = new ArrayList<Double>();
ArrayList<Double> shortD = new ArrayList<Double>();
Point temppo;
for(int i=0; i<p.length; i++) {//start for
for(int k=i+1; k<p.length; k++) {//start inner for
distance= Math.sqrt(Math.pow(p[i].getX()-p[k].getX(),2)+Math.pow(p[i].getY()-p[k].getY(),2));
D.add(distance);
//end inner for
}
shortD.add(Min(D));
D.clear();
}//end for
return shortD;
}
public static double Min(ArrayList<Double> num){
double minValue = num.get(0);
for (int j = 1; j <num.size()-1; j++) {
if (num.get(j) < minValue )
minValue = num.get(j);
}
return minValue; }
}//end class
هالكود البسيط مبدئياً راح يتم قراءة الإحداثيات كقيم من المستخدم مثلا اخترنا ٤ احداثيات ولتكن ٢ ١ ، ٩ ٦ ، ٥ ٧ ، ١٥ ٨
مفروض في كل مرة يجيب اقصر مسافة بالنسبة للاحداثي ٢ ١ ف راح يحسب المسافة بين هالاحداثي وكل القيم الاخرى ويخزنها الاراي ليست D ويجب اقصر مسافة بارسال D لميثود المينيمم عشان تجيب اقصر مسافة وهكذا
لكن يوجود مشكلة indexOutOfBounds وما اعرف ايش السبب؟
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (1)
Mohammad Laif • منذ 5 سنوات
بالعاده هذه المشكله تظهر عند الاستعلام عن عنصر غير موجود في المتسلسلات Array (الـ String يعتبر متسلسله Array ايضاً).
لحلها
- حاولي تحددي اي من الـ For التي تسببها. قبل الخوض فيها تستطيعي استخدام if الشرطيه لتحديد هل المتسلسله فارغه ام لا, ثم الاتيان بـ For.
- بعد ذلك سيتضح لكي المتسلسله الفارغه او ان الـ For Loop تقوم بالاستعلام عن عدد يختلف عن حجم المتسلسله.
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !