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

عمل Split Method

بدأه 201lama في 25 يناير 2010 · 8 رد · 682 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

المطلوب مني عمل Split Method program عندما ادخل مثلا هذا المتغير ("{:content:}quot;,"947$871") بتكون مخرجاته بهذا الشكل (947,"{:content:}quot;,871) واذا كان يحتوي على $ اكثر من مرة يقوم فقط بطباعة $ الاولي وكذلك اذا كانت المدخلات هي ("*-+","098+765-23") يقوم بجعل مخرجاتها (098,"+"567,"-"23) وهكذا

اليكم برنامجي

package SplitMethod;

import java.util.Scanner;

public class SplitMethod {
 public static void main(String[]args){
 Scanner input = new Scanner (System.in);
 String var1 ;
 System.out.print("Enter your variables: ");
 var1= input.next();
 String s,regex;
 String[] splitMethod = split(s,regex);
 System.out.print("The split of "+var1+" is "+splitMethod);


 }//end main
 public static String [] split(String s,String regex){
 String []var1 = null;
 s = "123+56-23";
 //if s = "24" is $ in ASCI Table so the return value is going to include 
 //that variable with doblut cotationMarks with the $ like this "S"
 if (s == "24"){
 System.out.print("123\""+s+"\"45");}
 else if (s =="2A"){
 System.out.print("123,\""+s"\"56"+"\"-"+"\"23"));
 } 

 return var1;
 }//end split method

}//end class

تم تعديل هذه المشاركة بواسطة herch في 25 يناير 2010 في 12:34

#2

ممكن توضحي المطلوب اكثر

قصدك ان المستخدم ممكن يدخل

"$","947$871"

او

"*-+","098+765-23"

بمافيها علامات التنصيص والفاصله ؟

عموما بشكل عام عندك خلفيه عن الـ method

split

?

تحيتي

#3

عفواً اخي عن عدم توضيحي للسؤال.

المطوب مني كمبرمج اني اقوم بأنشاء Split method واخليها تعمل. معروف كيفية استخدامها بس المطلوب كيف اننا نقوم بعمل تعمل بدلامن استخدامها مباشرة .

فمثلا اذا المستخدم ادخل اي قيمه عددية ووجدت علامة $ او *+- او/ يقوم البرنامج بفصل الارقام عن هذه $, *+- ,/ بووضع علامة " حول $ *+- /

بمعني اذا ادخل المستخدم هذا المتغير 78+3*38 فان المخرجات ضروري تكون بهذا الشكل 78,"+",3,"*",38

Kmarwani كتب:

ممكن توضحي المطلوب اكثر

قصدك ان المستخدم ممكن يدخل

"$","947$871"

او

"*-+","098+765-23"

بمافيها علامات التنصيص والفاصله ؟

عموما بشكل عام عندك خلفيه عن الـ method

split

?

تحيتي

#4

الكود غير واضح

أنت تمرر المتغيرين s و regex للطريقة split، لكنهما لا يحتويان غلى اي قيمة.

كما أنك لا تستعمل المتغير regex، فما الفائدة منه؟

#5

اريد مساعدتكم في تعديل Split method في MyString Program بحيث انه يقوم بتحويل هذا المدخل (48+98*23-) تكون المخرجات (48,"+",98,"*",23,"{:content:}quot;,"-") كذلك لا يقوم تكرات المتغيرات ($*+-/) في هذا البرنامج

package mystring;
public class MyString {

private char [] data;
 public MyString(char [] data){
 this.data = new char[data.length];
 for(int i = 0; i < data.length; i++)
 this.data=data;
 }
 public MyString(String data){
 this.data = new char[data.length()];
 for(int i = 0; i < data.length(); i++)
 this.data=data.charAt(i);
 }
 public MyString(){

 }
 public char charAt(int index){
 return data[index];
 }
 public int length(){
 return data.length;
 }
 public MyString substring(int start){
 MyString x = new MyString();
 x.data = new char[this.data.length-start];
 for( int i = 0; i < x.data.length;i++)
 x.data=this.data[i+start];
 return x;
 }
 public MyString substring(int start, int end){
 return new MyString(new char[]{'A','b'});//Just to keep the compiler happy
 }
 public char [] toCharArray(){
 char [] temp = new char[data.length];
 for(int i = 0; i < data.length; i++)temp=data;
 return temp;
 }
 public MyString toLowerCase(){
 MyString temp = new MyString();
 temp.data = new char[data.length];
 for(int i = 0; i < temp.data.length; i++)
 temp.data = data;
 for(int i = 0; i < data.length; i++){
 if(data>='A'&&data<='Z')
 temp.data=(char)(temp.data+32);
 }
 return temp;
 }
 public boolean equals(MyString other){
 return true;
 }
 public String toString(){
 return new String(data);
 }
 public MyString concat(MyString other){
 MyString temp = new MyString();
 temp.data = new char[this.data.length+other.data.length];
 for(int i = 0; i < this.data.length; i++)temp.data=this.data;
 for(int i = 0; i < other.data.length; i++)temp.data[this.data.length+i]=other.data;
 return temp;
 }
//create a split method
 public MyString split(Sting s,String regx){
 // MyString temp = new MyString();
 for(int i = 0; i<this.data.length;i++)
 if(s == ' ){
 s = this.data=; 

 }//end if 


 }//end split method 
 public static void main(String[] args) {
 char [] test = {'A','B','C'};
 char [] test1;
 MyString s = new MyString(test);
 MyString t = new MyString("Hello");
 t = t.toLowerCase();
 System.out.println(t);
 test1 = t.toCharArray();
 for(int i = 0; i < t.length(); i++)
 System.out.print(test1);
 System.out.println();
 System.out.println("The substring of this word is "+t.substring(1));
 if(s.equals(new MyString("ABC")))
 System.out.println("equals");
 else System.out.println("not equals");
 System.out.println(s.concat(t));
 ////Spile method
 // MyString word = new MyString("123$45*1");
 System.out.print(split("123$45*1","$*"));

 }//end main

}//end class

تم تعديل هذه المشاركة بواسطة herch في 25 يناير 2010 في 21:22 — السبب: ضع الكود داخل الوسم [code]، الزر "<>". لن أقوم بتكر&#

#6

ماذا يمثل المتغير s والمتغير regex

ما هو شرط التقسيم؟؟ فلا يعقل أنك دائما ستقوم بتمرير هذا المدخل 48+98*23-

#7

أظن الموضوع كالتالي

لدينا حروف خاصة موجودة في النص الأول عند تواجدها في النص الثاني فهذا يعني أنه يجب فصل النص إلى نصين

مثال

النص المسمى regex

+-

النص المراد تقسيمه

10+12-50

ناتج التقسيم

10

12

50

فهمي صحيح؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#8

يبدو لي اني فهمت المطلوب ..

على اي حال الكود التالي على ما فهمت

import java.util.Scanner;

public class SplitMethod {
	 public static void main(String[]args){
//		 String regex="*+-,/";
//		 String text="78+3*3*81,";
		 Scanner input = new Scanner (System.in);
		 String text , regex;
		 System.out.print("Enter your variables: ");
		 text= input.next();
		 System.out.print("Enter your regex: ");
		 regex= input.next();

		 String[] result=mySplit(text, regex);
		 for (int i = 0; i < result.length; i++) {
			 System.out.print(result);
			 if(i<(result.length-1)){
				 System.out.print(" , ");
			 }
		}

	 }//end main

	 public static String[] mySplit(String text, String regex){

		 String constantsUsed="";
		 int count=0;

		 String[]mainArray=new String[text.length()];
		 String number="";
		 int index=-1;
		 boolean added=false;
		 for(int i=0; i<text.length();i++){
			 char c=text.charAt(i);
			 if(constantsUsed.indexOf(""+c)!=-1){
				 added=true;
			 }else if(regex.indexOf(""+c)!=-1){
				 ++count;
				 constantsUsed+=""+c;
				 mainArray="\""+c+"\"";
				 added=true;
			 }else{
				 number+=""+c;
				 if(index==-1){
					 index=i;
				 }
			 }
			 if(i==text.length()-1 ){
				 added=true;
			 }
			 if(added){
				 ++count;
				 mainArray[index]=number;
				 number="";
				 index=-1;
				 added=false;
			 }
		 }

		 String[]result=new String[count];
		 int i=0;
		 for(String s:mainArray){
			 if(s!=null){
				 result=s;
				 ++i;
			 }
		 }
		 return result;

	 }



}//end class

هذا مثال لمدخلات و ومخرجات البرنامج

Enter your variables: 776544#767#77^
Enter your regex: #^
776544 , "#" , 767 , 77 , "^"
#9

مشكورين

ع كل حال البرنامج اذا ادخلت له اي مدخل مثلاً 3432+33-34

يقوم بتحويلة تلقائياً الى 3432,"+",33,"-",34

يعني يقوم بتحويل +-/$اي مخرج من لهذه الرموز الى ,"الرمز ",

اشكركم ع مساعداتكم لي

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