PDA

View Full Version : سوال: اررور Runtime



X.Hijacker
پنج شنبه 29 خرداد 1393, 14:56 عصر
سلام خدمت همه ی دوستان عزیز این سوال هست :



http://sharecode.ir/section/problemset/problem/2118

ایا این کد اررور Runtime می دهد ؟





import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<String> words = new ArrayList<String>();
int i = 0;
words.add(input.next());
while(words.get(i).charAt(0) != 'z')
{
words.add(input.next());
i++;
}
if (words.size() >= 120000) System.exit(0);
int counter = 0;
try{
while (counter != words.size()-1 ){
for (int j = 0 ; j < (words.size()-1) ; j++)
{
String s = words.get(j) + words.get(counter);
for (int c = 0 ; c < (words.size()-1) ; c++) if (s.equals(words.get(c))) {System.out.print(s + "\n"); break;}
}
counter++;
} }
catch (RuntimeException e){
System.out.print(e);
}
}
}








اگر می دهد از کجا میدهد ؟
لطفا اطلاع دهید ممنون

vahid-p
پنج شنبه 29 خرداد 1393, 15:20 عصر
فکر میکردم تو حلقه ای که کلمات رو اضافه میکنی concurrent exception بده ولی اینجا ارورر نداد. چون ArrayList در حالت معمولی نمیشه هم عنصر add کرد و هم کلش رو پیمایش کرد )

یه سر به این تاپیک هم بزنید در مورد اررور اضافه کردن همراه با پیمایش: ( ولی شما اینجا پیمایش انجام ندادید و فقط آخرین عنصر رو میخونید. اگر ضمن اضافه کردن، پیمایش هم داشتید اررور میداد )
http://barnamenevis.org/showthread.php?451233-Add-%DA%A9%D8%B1%D8%AF%D9%86-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D9%BE%DB%8C%D9%85%D8%A7%DB%8C%D8%B4-ArrayList-%D9%88-ConcurrentModificationException-%DB%8C%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-LinkedList-%D8%9F%D8%9F%D8%9F

من که ارروری نمیبینم. چرا فکر میکنید اررور داره و در try - catch گذاشتید؟

X.Hijacker
پنج شنبه 29 خرداد 1393, 17:31 عصر
چون سایت ShareCode ارور میده نمیدونم جواب هم درسته ولی میگه Runtime Error واسه همین try catch گذاشتم گفتم شاید درست بشه اخه یه بار درست شد !

ممنون ازتون

vahid-p
شنبه 31 خرداد 1393, 13:16 عصر
البته خیلی سوالات اینجا مطرح میشه که تو صورت سوال مشخص نشده و شما تو برنامتون استفاده کردید.
مثلا کجا تو سوال گفته شده که اگر کلمه ای اولش z بود برو بیرون؟
همچنین ورودی رو حالا فرض کنیم System.in درست باشه، شایدم از فایل بخونه که نمیدونم. ولی احتمالا همین System.in درسته.
بعد اینکه استفاده از ArrayList سرعتتون رو کم میکنه ( اشتباه نیست ). شاید یک آرایه با سایز 120 هزار بهتر باشه و تعداد کلمات رو ذخیره کنید.
همچنین چون به ترتیب حروف الفبا است میتونید از binarySearch استفاده کنید. ( چون در روش شما مرتبه زمانی الگوریتم n^3 است که در بدترین حالت 14400000000*120000 مقایسه لازمه و با BinarySearch مرتبه از n^2log(n) است و در بدترین حالت به 14400000000*17 مقایسه کافیه. که خب تفاوت زمانی واضحه )

البته اینا همش برای بهینه بودنه وگرنه اشکال در runtime فکر کنم همون اتمام با حرف اول 'z' باشه.