sayeprogramer
سه شنبه 15 مهر 1393, 19:55 عصر
سوال در مورد طراحی یه کلاس آرایه است که باید ویژگی های زیر رو داشته باشه:
آرایه ی مورد نظر کاربر هر چند بعد میتونه باشه
جنرال بودن مساله باید رعایت بشه
آرایه میتونه از صفر شروع نشه
برای اندیس خارج از محدوده باید ارور بده
کلاس به شکل زیر است:
public class MyArray<type> {
private type[] larr;
public MyArray(String arg)
{
}
public type get(String arg)
{
}
public void set(String arg, type value)
{
}
}
...............
public class Main {
public static void main(String[] args) {
MyArray<Integer> array = new
MyArray<Integer>( "4:7-2:5-9:18" );
array.set( "5-3-12" , 2); //Autoboxing
int temp = array.get( "5-3-12" ); //Unboxing
array.set( "5-3-19" , 21); // your program
should generate the out of bound exception
MyArray<Integer> array2 = new
MyArray<Integer>( "0:9-2:5" );
}
}
ﻣﺜﺎﻝ ﺯﯾﺮ ﻣﯽ ﺑﯿﻨﯿﺪ ﮐﺎﺭﺑﺮ ﯾﮏ ﺍﺭﺍﯾﻪ ﺑﺎ ﻧﺎﻡ array ﺭﺍ ﺑﺎ ﺳﻪ ﺑﻌﺪ
( ﺍﺑﻌﺎﺩ ﺑﺎ – ﺟﺪﺍ ﻣﯽ ﺷﻮﻧﺪ) ﺗﻌﺮﯾﻒ ﮐﺮﺩﻩ ﺍﺳﺖ . ﺭﯾﻨﺞ ﺑﻌﺪ ﺍﻭﻝ
ﺍﺯ 4 ﺗﺎ 7، ﺭﯾﻨﺞ ﺑﻌﺪ ﺩﻭﻡ ﺍﺯ 2 ﺗﺎ 5 ﻭ ﺭﯾﻨﺞ ﺑﻌﺪ ﺳﻮﻡ ﺍﺯ 9 ﺗﺎ
18 ﺗﻌﺮﯾﻒ ﺷﺪﻩ ﺍﺳﺖ . ﺩﺭ ﺧﻂ ﺑﻌﺪﯼ ﺧﺎﻧﻪ ﺍﯼ ﺍﺯ ﺁﺭﺍﯾﻪ ﻣﻘﺪﺍﺭ
ﺩﻫﯽ ﻣﯽ ﺷﻮﺩ ( ﺗﺎﺑﻊ set ) ﻭ ﺩﺭ ﺧﻂ ﺑﻌﺪﯼ ﻫﻤﺎﻥ ﺧﺎﻧﻪ ﺍﺯ ﺍﺑﺰﺍﺭ
ﺷﻤﺎ ﺩﺭﺧﻮﺍﺳﺖ ﻣﯽ ﺷﻮﺩ (ﺗﺎﺑﻊ get ). ﺧﻂ ﺑﻌﺪﯼ ﻣﯽ ﺧﻮﺍﻫﺪ
ﻋﺪﺩ 21 ﺭﺍ ﺩﺭ ﻣﺤﻠﯽ ﮐﻪ ﮐﻪ ﺩﺭ ﺭﯾﻨﺞ ﻧﺮﻣﺎﻝ ﻧﯿﺴﺖ ﺳﺖ ﮐﻨﺪ
( 19 ﻣﺎﺑﯿﻦ 9 ﺗﺎ 18 ﯾﺴﺖ) ﮐﻪ ﺍﻟﺒﺘﻪ ﺩﺭ ﺍﯾﻦ ﺻﻮﺭﺕ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ
ﺑﺎﯾﺪ ﯾﮏ exception ﺍﺯ ﻧﻮﻉ OutOfBound ﺗﻮﻟﯿﺪ ﮐﻨﺪ . ﺩﺭ
ﺧﻂ ﺑﻌﺪﯼ ﯾﮏ ﺁﺭﺍﯾﻪ ﺩﯾﮕﺮ ﺑﺎ ﻧﺎﻡ array2 ﺑﺎ ﺍﺑﻌﺎﺩﯼ ﻣﺘﻔﺎﻭﺕ
ﺗﻌﺮﯾﻒ ﺷﺪﻩ ﺍﺳﺖ
آرایه ی مورد نظر کاربر هر چند بعد میتونه باشه
جنرال بودن مساله باید رعایت بشه
آرایه میتونه از صفر شروع نشه
برای اندیس خارج از محدوده باید ارور بده
کلاس به شکل زیر است:
public class MyArray<type> {
private type[] larr;
public MyArray(String arg)
{
}
public type get(String arg)
{
}
public void set(String arg, type value)
{
}
}
...............
public class Main {
public static void main(String[] args) {
MyArray<Integer> array = new
MyArray<Integer>( "4:7-2:5-9:18" );
array.set( "5-3-12" , 2); //Autoboxing
int temp = array.get( "5-3-12" ); //Unboxing
array.set( "5-3-19" , 21); // your program
should generate the out of bound exception
MyArray<Integer> array2 = new
MyArray<Integer>( "0:9-2:5" );
}
}
ﻣﺜﺎﻝ ﺯﯾﺮ ﻣﯽ ﺑﯿﻨﯿﺪ ﮐﺎﺭﺑﺮ ﯾﮏ ﺍﺭﺍﯾﻪ ﺑﺎ ﻧﺎﻡ array ﺭﺍ ﺑﺎ ﺳﻪ ﺑﻌﺪ
( ﺍﺑﻌﺎﺩ ﺑﺎ – ﺟﺪﺍ ﻣﯽ ﺷﻮﻧﺪ) ﺗﻌﺮﯾﻒ ﮐﺮﺩﻩ ﺍﺳﺖ . ﺭﯾﻨﺞ ﺑﻌﺪ ﺍﻭﻝ
ﺍﺯ 4 ﺗﺎ 7، ﺭﯾﻨﺞ ﺑﻌﺪ ﺩﻭﻡ ﺍﺯ 2 ﺗﺎ 5 ﻭ ﺭﯾﻨﺞ ﺑﻌﺪ ﺳﻮﻡ ﺍﺯ 9 ﺗﺎ
18 ﺗﻌﺮﯾﻒ ﺷﺪﻩ ﺍﺳﺖ . ﺩﺭ ﺧﻂ ﺑﻌﺪﯼ ﺧﺎﻧﻪ ﺍﯼ ﺍﺯ ﺁﺭﺍﯾﻪ ﻣﻘﺪﺍﺭ
ﺩﻫﯽ ﻣﯽ ﺷﻮﺩ ( ﺗﺎﺑﻊ set ) ﻭ ﺩﺭ ﺧﻂ ﺑﻌﺪﯼ ﻫﻤﺎﻥ ﺧﺎﻧﻪ ﺍﺯ ﺍﺑﺰﺍﺭ
ﺷﻤﺎ ﺩﺭﺧﻮﺍﺳﺖ ﻣﯽ ﺷﻮﺩ (ﺗﺎﺑﻊ get ). ﺧﻂ ﺑﻌﺪﯼ ﻣﯽ ﺧﻮﺍﻫﺪ
ﻋﺪﺩ 21 ﺭﺍ ﺩﺭ ﻣﺤﻠﯽ ﮐﻪ ﮐﻪ ﺩﺭ ﺭﯾﻨﺞ ﻧﺮﻣﺎﻝ ﻧﯿﺴﺖ ﺳﺖ ﮐﻨﺪ
( 19 ﻣﺎﺑﯿﻦ 9 ﺗﺎ 18 ﯾﺴﺖ) ﮐﻪ ﺍﻟﺒﺘﻪ ﺩﺭ ﺍﯾﻦ ﺻﻮﺭﺕ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ
ﺑﺎﯾﺪ ﯾﮏ exception ﺍﺯ ﻧﻮﻉ OutOfBound ﺗﻮﻟﯿﺪ ﮐﻨﺪ . ﺩﺭ
ﺧﻂ ﺑﻌﺪﯼ ﯾﮏ ﺁﺭﺍﯾﻪ ﺩﯾﮕﺮ ﺑﺎ ﻧﺎﻡ array2 ﺑﺎ ﺍﺑﻌﺎﺩﯼ ﻣﺘﻔﺎﻭﺕ
ﺗﻌﺮﯾﻒ ﺷﺪﻩ ﺍﺳﺖ