الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هذا السياق صحيح؟

مغلق
بدأه nami في 24 أبريل 2005 · 8 رد · 805 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام,,,

حاولت عمل applet اريدقيها تعريف مجموعة من الTextFields,Labels عددها يقوم المستخدم بإدخاله

فهل السياق المكتوب أسفل صحيح لأنه يظهرهذا الexception

ArrayIndexOutOfBoundsException

for(int i=0;i<Q;i++)

{

L=new Label("Vector no."+i);

add(L);

for(int j=0;j<F;j++)

{

Tf[j]= new TextField(3);

add(Tf[j]);

}}

#2

أين تعريف المصفوفات، هل عرفتها لتحمل العدد المطلوب؟

Label []l = new Label[ number];//// xxx

#3

سلام,,,

نعم أخي أبو مازن لقد قمت بتعريف المصفوفات سابقا

TextField[][] Tf=new TextField[F][Q]; //tetfields of number F*Q

Label[] L= new Label[Q];

المشكله تبدأ مع بداية التعاملمع هذه المصفوفات ومع كل ضغطه على مفتاح الإدخال يظهر هذا الexecption

#4

إذن الخطأ ليس هنا بل جزء آخر من البرنامج!! ضع شفرة برنامجك كاملا!!

#5

سلام,,,

هاك الشيفرة كاملة

import java.applet.Applet;

import java.awt.*;

public class Kmeans extends Applet

{

int K,Q,F;

TextField TfK,TfQ,TfF;

Label LK,LQ,LF;

public void init()

{

LF=new Label("Enter the number of features");

add(LF);

TfF= new TextField(3);

add(TfF);

LK=new Label("Enter K value");

add(LK);

TfK= new TextField(3);

add(TfK);

LQ=new Label("Enter the number of vectors to be classified");

add(LQ);

TfQ= new TextField(10);

add(TfQ);

}

public void paint(Graphics g)

{

/*TfK.setText("0");

TfQ.setText("0");

TfF.setText("0");*/

F= Integer.parseInt(TfF.getText());

K= Integer.parseInt(TfK.getText());

Q= Integer.parseInt(TfQ.getText());

g.drawString("K = "+K,50,100);

g.drawString("Q = "+Q,80,100);

g.drawString("F = "+F,110,100);

TextField[][] Tf=new TextField[F][Q]; //tetfields of number F*Q

Label[] L= new Label[Q];

for(int i=0;i<Q;i++) //Generatint the textfields for features

{

L=new Label("Vector no."+i);

add(L);

for(int j=0;j<F;j++)

{

Tf[j]= new TextField(3);

add(Tf[j]);

}}

}

public boolean action(Event ev,Object arg)

{

repaint();

return true;

}

}

#6

أولا:

الخطأ هو NumberFormatException وليس ArrayIndexOutofBounds

Exception in thread "AWT-EventQueue-1" java.lang.NumberFormatException: For inpu
t string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
        at java.lang.Integer.parseInt(Integer.java:468)
        at java.lang.Integer.parseInt(Integer.java:497)
        at Kmeans.paint(Kmeans.java:37)

ثانيا: لم أفهم ماهي وظيفة البرنامج! لكن طريقة عملك غير صحيحة.

السياق غير صحيح.

وضعت لك شرح الأخطاء داخل الملف..

كلما يتم رسم النافذة تضيف حقل الكلمات جديدة،وتتكاثر المسألة. إضافة المكونات اجعلها في طريقة أخرى غير paint.

أنت تريد أن تتغير المكونات بعد كل عملية إدخال لمعلومات جديدة. احذف المكونات القديمة وبعد هذا أضف الجديد. كل هذا اجعله بعيدا عن paint.

استعمل ActionListener للاستماع إلى إدخال المستخدم!!

Kmeans.zip

#7

جزاك الله خيرا,,,

نعم النصح ذاك ولكن بعض أسماء المتغيرات لها معنى في الخوارزم الذي أحاول تطبيقه

وهو بالمناسبة له علاقة بالتعرف على الأنماط

نعم يظهر هذا NumberFormatException

ولكن بعد ادخال بيانات إلى المربع النصي يتوقف عن الظهور

ثم يبدأ هذا ArrayIndexOutofBounds في الظهور

#8
nami كتب:

سلام,,,

هاك الشيفرة كاملة

import java.applet.Applet;
import java.awt.*;
public class Kmeans extends Applet
{
int K,Q,F;
TextField TfK,TfQ,TfF;
Label LK,LQ,LF;
public void init()
{
LF=new Label("Enter the number of features");
add(LF);
TfF= new TextField(3);
add(TfF);
LK=new Label("Enter K value");
add(LK);
TfK= new TextField(3);
add(TfK);
LQ=new Label("Enter the number of vectors to be classified");
add(LQ);
TfQ= new TextField(10);
add(TfQ);
}
public void paint(Graphics g)
{
/*TfK.setText("0");
TfQ.setText("0");
TfF.setText("0");*/
F= Integer.parseInt(TfF.getText());
K= Integer.parseInt(TfK.getText());
Q= Integer.parseInt(TfQ.getText());
g.drawString("K = "+K,50,100);
g.drawString("Q = "+Q,80,100);
g.drawString("F = "+F,110,100);
TextField[][] Tf=new TextField[F][Q];         //tetfields of number F*Q
Label[] L= new Label[Q];
for(int i=0;i<Q;i++)                //Generatint the textfields for features
{
L=new Label("Vector no."+i);
add(L);
for(int j=0;j<F;j++)
{
Tf[j]= new TextField(3);
add(Tf[j]);
}}
}
public boolean action(Event ev,Object arg)
{
repaint();
return true;	
}
}
[snapback=315923]
اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#9

سلام,,,

ما هذا الرد الأخير

المشكلة مازالت قائمة

المطلوب عمل مجموعه من صناديق النصوص

وإدخال مجموعة من القيم بها وإجراء بعض الحسابات عليها

فإن كان من طريق آخر فهذا ممكن

هذا الموضوع مغلق.

مواضيع مشابهة