هي پوسٽ بنيادي طور تي انهن لاءِ آهي جيڪي انٽرويو جي تياري ڪري رهيا آهن. هي اهو آهي جتي اهي اهڙي قسم جا پزل پڇڻ پسند ڪن ٿا. حقيقت ۾، هٿ تي ڪم آسان ۽ وڌيڪ منطقي آهي چڪر ۽ حالتن سان حل ڪرڻ لاء. ۽ اسان سمجهون ٿا ته ڪو به JavaRush شاگرد اهو ڪري سگهندو جاوا سنٽيڪڪس جي چوٿين سطح کان پوءِ . پر مٿين طريقن جي وڏي اڪثريت انهن لاءِ ٺهيل آهي جيڪي اڳ ۾ ئي جاوا ملٽي ٿريڊنگ ۾ ”داخل“ ٿي چڪا آهن . نوٽ: هي لوپ ۽ حالتون سڌو سنئون استعمال نه ڪرڻ بابت آهي. حقيقت ۾، اهي واضح طور تي "تعمير ٿيل" آهن انهن مان اڪثر حل جو ذڪر ڪيو ويو آهي.
شايد توهان وٽ هن مسئلي جو پنهنجو حل آهي؟ تبصرن ۾ حصيداري ڪريو! |
تنهن ڪري، طريقو 1: بس اهو لکو!
يقينن، پهرين شيء جيڪا هڪ ابتدائي ذهن ۾ اچي ٿي اها سڌي ڳولا آهي. غير معقول، پر سادو ۽ سمجھڻ وارو. بلڪل ساڳي طرح اسان جاوا رش جي پهرين سطحن ۾ مسئلا حل ڪيا.System.out.println("1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 ,
21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 ,
43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 ,
65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 ,
97 , 98 , 99 , 100");
پر، توهان کي تسليم ڪرڻ گهرجي، اهو ڪنهن به طرح بورنگ آهي. تنهن ڪري، توهان ٻيو طريقو استعمال ڪري سگهو ٿا.
طريقو 2: اسٽرنگ استعمال ڪريو ۽ اسٽرنگ تي اوور رائڊ ڪريو
public static void main(String[] args) {
Object[] numbers = new Object[100];
Arrays.fill(numbers, new Object() { //создаем анонимный класс
private int count = 0;
@Override
public String toString() {
return Integer.toString(++count);
}
});
System.out.println(Arrays.toString(numbers));
}
تشريح @Override
ظاهر ڪري ٿي ته اسان هڪ بنيادي طبقي جي طريقي کي ختم ڪرڻ وارا آهيون. هن معاملي ۾ اسان کي ختم ڪري رهيا آهيون toString
. حقيقت ۾، هي، تقريبن سڀني هيٺين حلن وانگر، لوپس تي مشتمل آهي. اهي چڪر صرف استعمال ٿيل طريقن ۾ ٺهيل آهن.
طريقو 3: ورجائي استعمال ڪريو
ورهاڱي کي سمجهڻ لاءِ، توهان کي ٻيهر ورجائي سمجهڻ جي ضرورت آهي. Recursion، يا هڪ فنڪشن پاڻ کي سڏڻ، هڪ تمام دلچسپ موضوع آهي، ۽ هميشه فوري طور تي سمجھڻ وارو ناهي. JavaRush تي اهو جاوا ڪليڪشن جي ڳولا ۾ شامل آهي (مڪمليت لاءِ)، پر حقيقت ۾ اهو سمجهي سگهجي ٿو ۽ استعمال ڪري سگهجي ٿو (يا استعمال نه ڪيو ويو آهي... ڇو - توهان کي موضوع جي مطالعي دوران معلوم ٿيندو!) تمام گهڻو اڳ، لوپس جي مطالعي کان پوءِ. ۽ مشروط ٽپو.public class Recursion {
public void ShowNums(int i) {
// метод, который печатает
int x = 1;
// блок try проверяет, достигли ли мы нуля
try {
int m = x / i; // здесь выбрасывается исключение при i = 0
System.out.println(i);
i--;
ShowNums(i); // а вот и рекурсивный вызов
}
catch(ArithmeticException e) {
// деление на нуль выбрасывает ArithmeticException
return; // Останавливается при попытке деления на нуль
}
}
public static void main(String[] args) {
Recursion r = new Recursion();
r.ShowNums(100); // вызов метода со meaningм 100
}
}
نوٽ:هتي پيداوار سڌي طرح نه آهي، پر ريورس ترتيب ۾. ڪوڊ کي تبديل ڪرڻ جي ڪوشش ڪريو ته جيئن انگ اکر ڏيکاريا وڃن جيئن بيان ڪيل حالت ۾، يعني 1 کان 100 تائين. اسان تبصرن ۾ حل جا منتظر آهيون! |
طريقو 4: سيمفورس استعمال ڪريو
public class To100 {
public static void main(String[] args) {
final int max = 100;
new java.util.concurrent.Semaphore(max) {
void go() {
acquireUninterruptibly();
System.err.println(max-availablePermits());
go();
}
}.go();
}
}
سيمفورس هڪ هم وقت سازي جو مطلب آهي وسيلن تائين رسائي لاءِ. جاوا ۾، سيمفورس جي نمائندگي ڪئي ويندي آهيSemaphore
لائبريريjava.util.concurrent
.
طريقو 5: موضوع استعمال ڪريو
public class Counter extends Thread{
private int cnt;
public Counter(){
this.cnt = 0;
}
private void increment(){
System.out.println(cnt++);
try{
Thread.sleep(1000);
}catch(Exception e){}
increment();
}
public void run(){
increment();
}
public static void main(String[] args) throws Exception{
Counter cntr = new Counter();
cntr.start();
cntr.join(100000);
cntr.interrupt();
System.exit(0);
}
}
طريقو 6: پنهنجي لائبريرين کي ڄاڻو!
جاوا وٽ ڪيتريون ئي دلچسپ شيون آهن. مثال طور، ڪلاسjava.util.BitSet
. اهو توهان کي ٿورڙو ویکٹر ٺاهڻ جي اجازت ڏئي ٿو جنهن جي سائيز متحرڪ طور تي تبديل ٿي. اهو آهي، هڪ طبقاتي اعتراض BitSet
قدرن سان true
يا false
. شروعات ۾ سڀ بٽ برابر آهن false
. سيٽ کي محفوظ ڪرڻ لاءِ، ویکٹر کي ذخيرو ڪرڻ لاءِ گهربل ميموري جي مقدار تمام اهم بٽ تائين جيڪا پروگرام ۾ سيٽ يا ري سيٽ ڪئي وئي هئي مختص ڪئي وئي آهي - ان کان وڌيڪ سڀ بٽ برابر سمجهيا وڃن ٿا false
.
public class To100 {
public static void main(String[] args) {
String set = new java.util.BitSet() {{ set(1, 100+1); }}.toString();
System.out.append(set, 1, set.length()-1);
}
}
طريقو 7: ویکٹر ڪلاس استعمال ڪريو
ها، ویکٹر طبقو ختم ٿيل آهي ۽ تمام گهٽ استعمال ٿيندو آهي. اڃا، ڇو نه؟import java.util.Vector;
public class PrintOneToHundered {
static int i;
PrintOneToHundered() {}
public String toString() { return ++i+""; }
public static void main(String[] args) {
Vector v1 =new Vector(); v1 .add(new PrintOneToHundered());
Vector v2 =new Vector(); v2 .addAll(v1 ); v2 .addAll(v1 );
Vector v4 =new Vector(); v4 .addAll(v2 ); v4 .addAll(v2 );
Vector v8 =new Vector(); v8 .addAll(v4 ); v8 .addAll(v4 );
Vector v16 =new Vector(); v16 .addAll(v8 ); v16 .addAll(v8 );
Vector v32 =new Vector(); v32 .addAll(v16); v32 .addAll(v16);
Vector v64 =new Vector(); v64 .addAll(v32); v64 .addAll(v32);
Vector v100=new Vector(); v100.addAll(v64); v100.addAll(v32); v100.addAll(v4);
System.out.println(v100);
}
}
Quora مان مواد جي بنياد تي
GO TO FULL VERSION