JavaRush /Блоги Java /Random-TG /Чӣ тавр рақамҳоро аз 1 то 100 дар Java бидуни ҳалқаҳо ва ...

Чӣ тавр рақамҳоро аз 1 то 100 дар Java бидуни ҳалқаҳо ва шартҳо чоп кардан мумкин аст?

Дар гурӯҳ нашр шудааст
Ин мақола пеш аз ҳама барои онҳое, ки ба мусоҳиба омода мешаванд, пешбинӣ шудааст. Дар ин ҷо онҳо мехоҳанд ин гуна муаммоҳоро пурсанд. Дарвоқеъ, вазифаи дар пеш истода бо давраҳо ва шароитҳо осонтар ва мантиқтар аст. Ва мо фикр мекунем, ки ҳар як донишҷӯи JavaRush метавонад ин корро пас аз сатҳи чоруми квести Java Syntax иҷро кунад . Аммо аксарияти кулли усулҳои дар боло овардашуда барои онҳое тарҳрезӣ шудаанд, ки аллакай Java Multithreading-ро “дохил кардаанд” . Эзоҳ: Ин дар бораи истифодаи бевоситаи ҳалқаҳо ва шартҳо мебошад. Дарвоқеъ, онҳо ба таври ғайримустақим ба аксари қарорҳои зикршуда "сохта шудаанд". Чӣ тавр рақамҳоро аз 1 то 100 дар Java бидуни ҳалқаҳо ва шартҳо чоп кардан мумкин аст?  - 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: сатрҳоро истифода баред ва toString -ро бекор кунед

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 он дар ҷустуҷӯи Java Collections фаро гирифта шудааст (барои пуррагӣ), аммо дар асл онро метавон фаҳмид ва истифода кард (ё истифода намешавад... чаро - шумо ҳангоми омӯзиши мавзӯъ хоҳед фаҳмид!) хеле пештар, фавран пас аз омӯзиши ҳалқаҳо ва ҷаҳиши шартӣ.
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
    }

}
Шарҳ:дар ин чо баромад на бо тартиби бевосита, балки бо тартиби баръакс ба чо оварда мешавад. Кӯшиш кунед, ки codeро тағир диҳед, то рақамҳо тавре нишон дода шаванд, яъне аз 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, семафорҳоро синфи китобхонамуаррифӣ мекунанд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 бисёр чизҳои ҷолиб дорад. Масалан, синф java.util.BitSet. Он ба шумо имкон медиҳад, ки вектори битеро эҷод кунед, ки андозаи он ба таври динамикӣ тағир меёбад. Яъне, an objectи синф 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