JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ 1 کان 100 تائين نمبر ڪيئن پرنٽ ڪجي بغير لوپ ۽ شرطن...

جاوا ۾ 1 کان 100 تائين نمبر ڪيئن پرنٽ ڪجي بغير لوپ ۽ شرطن جي؟

گروپ ۾ شايع ٿيل
هي پوسٽ بنيادي طور تي انهن لاءِ آهي جيڪي انٽرويو جي تياري ڪري رهيا آهن. هي اهو آهي جتي اهي اهڙي قسم جا پزل پڇڻ پسند ڪن ٿا. حقيقت ۾، هٿ تي ڪم آسان ۽ وڌيڪ منطقي آهي چڪر ۽ حالتن سان حل ڪرڻ لاء. ۽ اسان سمجهون ٿا ته ڪو به JavaRush شاگرد اهو ڪري سگهندو جاوا سنٽيڪڪس جي چوٿين سطح کان پوءِ . پر مٿين طريقن جي وڏي اڪثريت انهن لاءِ ٺهيل آهي جيڪي اڳ ۾ ئي جاوا ملٽي ٿريڊنگ ۾ ”داخل“ ٿي چڪا آهن . نوٽ: هي لوپ ۽ حالتون سڌو سنئون استعمال نه ڪرڻ بابت آهي. حقيقت ۾، اهي واضح طور تي "تعمير ٿيل" آهن انهن مان اڪثر حل جو ذڪر ڪيو ويو آهي. جاوا ۾ 1 کان 100 تائين نمبر ڪيئن پرنٽ ڪجي بغير لوپ ۽ شرطن جي؟  - 1
شايد توهان وٽ هن مسئلي جو پنهنجو حل آهي؟ تبصرن ۾ حصيداري ڪريو!

تنهن ڪري، طريقو 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 مان مواد جي بنياد تي
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION