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

تحديد موقع الاحرف في مصفوفة

بدأه programing*gril في 14 مايو 2011 · 5 رد · 682 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخوتي الكرام

لدي يرنامج مكون من كلاسين (client) و (Server) في داخل الـ server

هناك مصفوفة مكونة من احرف يجب على الكلاينت ان يبعث موقع الاحرف و السيرفر عليه

ان يتاكد من جواب الكلاينت

المشكلة واجهتني في كتابة الـ switch فلم استطع معرفة تحديد الموقع

ارجو منكم المساعدة


import java.net.*;

public class puzzleserver{

static final int INPORT = 1990;
private byte [] buf = new byte [1000];
private DatagramPacket dp = new DatagramPacket (buf, buf.length);
private DatagramSocket socket;
private String[] board = new String[ 9 ];// puzzle board
private final static String[] letter = { "A", "B", "C", "H",
"B", "D", "A", "E",
"F", "D", "F", "G",
"H", "G", "E", "C" };

public puzzleserver(){
try{
socket = new DatagramSocket(INPORT);
System.out.println("Server Started");
while(true){

}//while

}//try
catch(SocketException e){
System.err.println("can't open socket");
System.exit(1);
}//catch

protected ParseExcution(String line) throw IllegalArgumentException {
String [] position ;
String [] element = line.split(":");

if (element.length != 5)
throw new IllegalArgumentException("parsing error.");
int first = 0;
int second = 0;
int theird = 0;
int forth = 0;
try{
first = Integer.parseInt(element[1]);
second = Integer.parseInt(element[2]);
theird = Integer.parseInt(element[3]);
forth = Integer.parseInt(element[4]);
}//try
catch(Exception e){
System.out.println("e");
}//catch

switch(element[0].charAt(0)){
case 'A':
position = {};
break;
case 'B':
position
break;
case 'C':
position
break;
case 'D':
position
break;
case 'E':
position
break;
case 'F':
position
break;
case 'G':
position
break;
case 'H':
position
break;
defult:
throw new IllegalArgumentException("Ops Try Agin.");
}//switch
return position;
}//ParseExcution

}//CONSTRUCTOR
}//puzzleserver
package puzzleserver;

308219358.gif
#2

اعتقد انا ما تريدين فعله اشبه بالتالي

public int getPosition(String s){
    for(int i = 0; i < letter.length ; i++){
        if(s.equalsIgnoreCase(letter)){
            return i;
        }
 }
    return -1 ;
}

بس ليش المصفوفه strings? مش مفروض تكون مصفوفه char?

تم تعديل هذه المشاركة بواسطة mental-driller في 14 مايو 2011 في 17:36

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

تعديل :

اولا الدالة parseExecution اش نوع الارجاع حقها؟ على ما اتعقد [] String

لاتك مرجعه الـ Position في اخر الداله، ليش حجم المصفوفه element 5 وليس اربعه ، وبعدين انتي بديتي من [element[1

بدلا من 0 ، المصفوفه position على كده حجمها 4

اعتقد ان الجمله هذه ليس لها داعي

 try {
            first = Integer.parseInt(element[1]);
            second = Integer.parseInt(element[2]);
            theird = Integer.parseInt(element[3]);
            forth = Integer.parseInt(element[4]);
        }//try

اقترح التعديلات التاليه

String [] position = new String[4];

بدلا من جملة switch

for (int i = 0; i < 4; i++) {
            position = getElementAtPosition(element);

        }

والداله getElementAtPosition تكون

private String getElementAtPosition(String s) {
        try {
            for (int i = 0; i < letter.length; i++) {
                return letter[Integer.parseInt(s)];
            }
        } catch (NumberFormatException e) {
            return null;
        }
        catch(ArrayIndexOutOfBoundsException e){
            return null;
        }
        return null ;
    }

تم تعديل هذه المشاركة بواسطة mental-driller في 14 مايو 2011 في 18:20

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#4

ممكن توضح حالة اختبار او test case لو انك مستخدم ماذا تكتب او كيف تستدعى هذا الكود ؟

غير انى الاحظ انك تقوم بكتابة الدالة parseExcution داخل ال constructor :)

برجاء توضيح اكثر

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#5
mental-driller كتب:

تعديل :

اولا الدالة parseExecution اش نوع الارجاع حقها؟ على ما اتعقد [] String

لاتك مرجعه الـ Position في اخر الداله، ليش حجم المصفوفه element 5 وليس اربعه ، وبعدين انتي بديتي من [element[1

بدلا من 0 ، المصفوفه position على كده حجمها 4

اعتقد ان الجمله هذه ليس لها داعي

 try {
            first = Integer.parseInt(element[1]);
            second = Integer.parseInt(element[2]);
            theird = Integer.parseInt(element[3]);
            forth = Integer.parseInt(element[4]);
        }//try

اقترح التعديلات التاليه

String [] position = new String[4];

بدلا من جملة switch

for (int i = 0; i < 4; i++) {
            position = getElementAtPosition(element);

        }

والداله getElementAtPosition تكون

أخي الكريم هذا بروتوكول مكون من مصفوفة

متفق عليها بين الكلينت و السيرفر

MOHAMED FATHEI كتب:

ممكن توضح حالة اختبار او test case لو انك مستخدم ماذا تكتب او كيف تستدعى هذا الكود ؟

غير انى الاحظ انك تقوم بكتابة الدالة parseExcution داخل ال constructor :)

برجاء توضيح اكثر

بالتوفيق

يبدو اني قد أخطأت هي عبارة عن مثود منفصلة عن الكونستركتر

يجب ان تتأكد من مواقع الحرف في المصفوفة وتقارتها بالمسج المبعوثة من الكلاينت

308219358.gif
#6
اقتباس

أخي الكريم هذا بروتوكول مكون من مصفوفة

متفق عليها بين الكلينت و السيرفر

اعلم يا اختي العزيزة

على ما اعتقد انكي تريدين ان تستقبل الداله parseExecution اربعة ارقام هي مواقع الحروف في المصفوفه letter ، الارقام توضع في المصفوفة element

ومن ثم يتم نسخ الحروف التي لها المواقع هذه من المصفوفه letter الى المصفوفه position

اذا كان هذا قصدك فالكود الذي قمت بوضعه في الاعلى يقوم بالمطلوب

ارجو انك تقرأ الكود الذي كتبته على الاقل ، وتشيري لي وين المشكله بالضبط

تم تعديل هذه المشاركة بواسطة mental-driller في 14 مايو 2011 في 23:45

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…