PDA

View Full Version : سوال: اشکن یک رشته ورودی



mehrdad85
سه شنبه 21 آبان 1392, 09:41 صبح
سلام
دوستان عزیز کسی میتونه بگه این کد چکار میکنه و آیا درست نوشته شده؟
من این کد را نوشتم که داخل یک رشته بگرده و این رشته ورودی به قسمت هایی تقسیم شده که با کاراکتر / از همدیگه جدا شدن من میخوام که هر کدوم از این قسمت ها را داخل یک ارایه یا رشته دیگه ذخیره کنم
آیا از این کد درست استفاده کردم؟الگوریتمش درسته ؟ کدش مشکلی نداره ؟ آخه خودم که اجرا میکنم ارور indexoutofboundexception میده نمیدونم چرا
کسی میتونه کمک کنه؟


public class WorkWithString {
int argumanIndex=0;
int index=1;
String[] arguman=new String[5];

public void StringManipulation (String str)
{

while (index<str.length())
{


String temp="";
while(str.charAt(index)!='/')
{

temp+=str.charAt(index);
index++;
}
arguman[argumanIndex]=temp;
argumanIndex++;

}
}



مرسی

Ehsan rashydy
سه شنبه 21 آبان 1392, 11:16 صبح
متد StringManipulation رو
اینطوریم میتونی بنویسی:

public void stringManipulation(String str) {
arguman = str.split("/");
}

mehrdad85
سه شنبه 21 آبان 1392, 12:55 عصر
متد StringManipulation رو
اینطوریم میتونی بنویسی:

public void stringManipulation(String str) {
arguman = str.split("/");
}


سلام
دوست عزیز من میخوام که رشته هایی که بین / هستند را داخل متغییرهای دیگه ای بریزم
از کد بالا میتونم استفاده کنم ؟ بعد خروجی های متد چی هستند؟


سپاس

Ehsan rashydy
سه شنبه 21 آبان 1392, 14:48 عصر
سلام
دوست عزیز من میخوام که رشته هایی که بین / هستند را داخل متغییرهای دیگه ای بریزم
از کد بالا میتونم استفاده کنم ؟ بعد خروجی های متد چی هستند؟
سپاس

تابع split همون طور که از اسمش پیداست ورودیش رو براساس یه regexp از هم جدا میکنه،

مثلا این رشته
aaa/bbbb/cccc/ddd
وقتی با تابع split صدا زده بشه(با توجه یه اون مثالی که نوشتم) خروجیش میشه یه آرایه با این عناصر:
"aaa", "bbbb", "cccc", "ddd"

mehrdad85
چهارشنبه 22 آبان 1392, 16:16 عصر
سلام
من از کد زیر استفاده کردم اما نمیدونم چرا به نوع داده ها ایراد میگیره
میدونید مشکلش کجاس؟
مرسی


String[][] arrayArguman=new String[15][10];


public String[][] AssignArrays (String[] str)
{
for(int i=0;i<15;i++)
{
for(int j=0;j<10;j++)
{
arrayArguman[i][j]=str[i].split("*");
}
}
return arrayArguman;
}

Ehsan rashydy
چهارشنبه 22 آبان 1392, 17:19 عصر
اولین نکته اینکه تو پست قبلیم گفتم تابع split ورودی یه regular expression میگیره، الان کاراکتر * تو regexp جاوا، یه quantifier به حساب میاد (اینجا رو حتما یه نگاه کنید (http://www.vogella.com/articles/JavaRegularExpressions/article.html))،
اما برای اینکه به تابع split بگی که با کاراکتر * رشته رو جدا کنه اینطوری باید صدا بزنیش:

split("
")

این مثالی که برات میزارم رو یه نگاه کن، ساده و واضحه، فک کنم مشکلات رو حل کنه.

public class Test {
public static void main(String[] args) {

String[][] arrayArguman=new String[3][3];
String[] input = {"aaa*bbb*ccc","ddd*eee*fff", "ggg*hhh*jjj"};

for (int i=0; i<3; i++) {
arrayArguman[i] = input[i].split("
");
}

for (int i=0;i<3;i++) {
for (int j=0; j<3; j++) {
System.out.println(arrayArguman[i][j]);
}
}
}
}