JavaRush /جاوا بلاگ /Random-UR /جاوا میں 1 سے 100 تک نمبروں کو بغیر لوپس اور شرائط کے کیس...

جاوا میں 1 سے 100 تک نمبروں کو بغیر لوپس اور شرائط کے کیسے پرنٹ کیا جائے؟

گروپ میں شائع ہوا۔
یہ پوسٹ بنیادی طور پر ان لوگوں کے لیے ہے جو انٹرویو کی تیاری کر رہے ہیں۔ یہ وہ جگہ ہے جہاں وہ اس قسم کی پہیلیاں پوچھنا پسند کرتے ہیں۔ درحقیقت، ہاتھ میں موجود کام کو سائیکل اور حالات کے ساتھ حل کرنا آسان اور زیادہ منطقی ہے۔ اور ہمارا خیال ہے کہ جاوا رشش کا کوئی بھی طالب علم جاوا سنٹیکس کی تلاش کے چوتھے درجے کے بعد ایسا کر سکے گا ۔ لیکن مندرجہ بالا طریقوں کی اکثریت ان لوگوں کے لیے تیار کی گئی ہے جو پہلے ہی جاوا ملٹی تھریڈنگ میں "داخل" ہو چکے ہیں ۔ نوٹ: یہ لوپس اور حالات کو براہ راست استعمال نہ کرنے کے بارے میں ہے۔ درحقیقت، وہ ذکر کردہ زیادہ تر حلوں کو واضح طور پر "بنائے ہوئے" ہیں۔ جاوا میں 1 سے 100 تک نمبروں کو بغیر لوپس اور شرائط کے کیسے پرنٹ کیا جائے؟  - 1
شاید آپ کے پاس اس مسئلے کا اپنا حل ہے؟ تبصرے میں اشتراک کریں!

تو، طریقہ 1: بس اسے لکھیں!

بلاشبہ، پہلی چیز جو ایک ابتدائی کے ذہن میں آتی ہے وہ ہے براہ راست تلاش۔ غیر معقول، لیکن سادہ اور قابل فہم۔ بالکل اسی طرح ہم نے JavaRush کی پہلی سطحوں میں مسائل کو حل کیا۔
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: تکرار استعمال کریں۔

تکرار کو سمجھنے کے لیے، آپ کو تکرار کو سمجھنا ہوگا۔ تکرار، یا خود کو کال کرنے والا فنکشن، ایک بہت ہی دلچسپ موضوع ہے، اور ہمیشہ فوری طور پر سمجھ میں نہیں آتا۔ 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