JavaRush /Java Blog /Random-TK /Java-da 1-den 100-e çenli sanlary aýlaw we şertsiz nädip ...

Java-da 1-den 100-e çenli sanlary aýlaw we şertsiz nädip çap etmeli?

Toparda çap edildi
Bu ýazgy, esasan, söhbetdeşliklere taýýarlanýanlar üçin niýetlenendir. Ine, bu hili bulaşyklary soramagy halaýarlar. Aslynda, öňdäki wezipe sikller we şertler bilen çözmek has aňsat we has mantykly. Islendik JavaRush talyby, Java Sintaksis gözleginiň dördünji derejesinden soň muny başarar diýip pikir edýäris . Aboveöne ýokardaky usullaryň aglaba köplügi Java Multithreading-a eýýäm “giren” adamlar üçin niýetlenendir . Bellik: Bu aýlawlary we şertleri gönüden-göni ulanmazlyk hakda. Aslynda, agzalan çözgütleriň köpüsine doly “guruldy”. Java-da 1-den 100-e çenli sanlary aýlaw we şertsiz nädip çap etmeli?  - 1
Belki, bu meseläni özüňiz çözüp bilersiňiz? Teswirlerde paýlaşyň!

Diýmek, 1-nji usul: diňe ýazyň!

Elbetde, täze öwreneniň kellesine ilkinji zat gönüden-göni gözlemekdir. Düşnüksiz, ýöne ýönekeý we düşnükli. JavaRush-yň birinji derejelerindäki meseleleri edil şonuň ýaly çözdük.
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"
);
Emma, ​​boýun almaly, bu birneme içgysgynç. Şonuň üçin ikinji usuly ulanyp bilersiňiz.

2-nji usul: setirleri ulanyň we “String” -e ýazyň

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));

    }
Bellik, @Overrideesasy synp usulyny ýok etjekdigimizi görkezýär. Bu ýagdaýda biz artykmaç pikir edýäris toString. Aslynda, aşakdaky çözgütleriň hemmesi ýaly diýen ýaly aýlawlar bar. Bu sikller diňe ulanylýan usullara gurulýar.

3-nji usul: gaýtalanmagy ulanyň

Gaýtalanma düşünmek üçin gaýtalanma düşünmeli. Gaýtalanma ýa-da özüni çagyrýan bir funksiýa gaty gyzykly mowzuk we hemişe derrew düşnükli däl. JavaRush -da Java kolleksiýa gözleginde (dolylygy üçin) öz içine alýar , ýöne aslynda düşünip we ulanyp bolýar (ýa-da ulanylmaýar ... näme üçin - mowzugy öwreneniňizde taparsyňyz!) Aýlawlary öwreneniňizden soň derrew! we şertli böküşler.
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
    }

}
Bellik:bu ýerde çykyş göni däl-de, ters tertipde edilýär. Sanlar şertde görkezilişi ýaly, ýagny 1-den 100-e çenli görkezilmegi üçin kody üýtgedip görüň. Teswirlerde çözgütlere garaşýarys!

4-nji usul: semaforlary ulanyň

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();
    }
}
Semaphores , çeşmä girmek üçin sinhronizasiýa serişdesidir. SemaphoreJava-da semaforlar kitaphanabilen aňladylýarjava.util.concurrent.

5-nji usul: sapaklary ulanyň

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-njy usul: Kitaphanalaryňyzy biliň!

Java-da köp gyzykly zatlar bar. Mysal üçin, synp java.util.BitSet. Ululygy dinamiki üýtgeýän biraz wektor döretmäge mümkinçilik berýär. .Agny, synp obýekti BitSetbelli bir sargyt edilen bitler toplumy trueýa-da false. Ilki bilen ähli bitler deňdir false. Toplumy saklamak üçin wektory programmada kesgitlenen ýa-da täzeden düzülen iň möhüm bitine çenli saklamak üçin zerur ýadyň mukdary bölünýär - ondan ýokary bitleriň hemmesi deň hasaplanýar 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-nji usul: Wektor synpyny ulanyň

Hawa, wektor synpy köne we seýrek ulanylýar. Näme üçin beýle däl?
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);
  }
}
Kworanyň materiallaryna esaslanýar
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION