JavaRush /Java Blogu /Random-AZ /Java-da 1-dən 100-ə qədər rəqəmləri döngələr və şərtlər o...

Java-da 1-dən 100-ə qədər rəqəmləri döngələr və şərtlər olmadan necə çap etmək olar?

Qrupda dərc edilmişdir
Bu yazı ilk növbədə müsahibəyə hazırlaşanlar üçün nəzərdə tutulub. Bu cür tapmacaları soruşmağı xoşlayırlar. Əslində, tapşırığı dövrlər və şərtlərlə həll etmək daha asan və daha məntiqlidir. Və düşünürük ki, hər hansı JavaRush tələbəsi bunu Java Sintaksis axtarışının dördüncü səviyyəsindən sonra edə biləcək . Lakin yuxarıda göstərilən üsulların böyük əksəriyyəti artıq Java Multithreading-ə “daxil olmuş”lar üçün nəzərdə tutulub . Qeyd: Bu, birbaşa döngələrdən və şərtlərdən istifadə etməməyə aiddir. Əslində, onlar qeyd olunan həllərin əksəriyyətində dolayısı ilə "inşa edilir". Java-da 1-dən 100-ə qədər rəqəmləri döngələr və şərtlər olmadan necə çap etmək olar?  - 1
Bəlkə bu problemin öz həlli var? Şərhlərdə paylaşın!

Beləliklə, 1-ci üsul: sadəcə yazın!

Əlbəttə ki, yeni başlayanların ağlına gələn ilk şey birbaşa axtarışdır. Məntiqsiz, lakin sadə və başa düşüləndir. JavaRush-un ilk səviyyələrində problemləri həll etdiyimiz kimi.
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"
);
Ancaq etiraf etməlisən ki, bu, bir növ darıxdırıcıdır. Buna görə də ikinci üsuldan istifadə edə bilərsiniz.

Metod 2: sətirlərdən istifadə edin və toString-i ləğv edin

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

    }
Annotasiya @Overridegöstərir ki, biz əsas sinif metodunu ləğv edəcəyik. Bu vəziyyətdə biz üstünlük təşkil edirik toString. Əslində, bu, demək olar ki, bütün aşağıdakı həllər kimi, döngələri ehtiva edir. Bu dövrlər sadəcə istifadə olunan metodlara daxil edilir.

Metod 3: rekursiyadan istifadə edin

Rekursiyanı başa düşmək üçün rekursiyanı başa düşmək lazımdır. Rekursiya və ya özünü çağıran funksiya çox maraqlı mövzudur və həmişə dərhal başa düşülən deyil. JavaRush -da o, Java Collections axtarışında (tamlıq üçün) əhatə olunub , lakin əslində onu başa düşmək və istifadə etmək olar (yaxud istifadə olunmur... niyə - mövzunu öyrənərkən öyrənəcəksiniz!) çox əvvəl, döngələri öyrəndikdən dərhal sonra. və şərti atlamalar.
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
    }

}
Qeyd:burada çıxış birbaşa deyil, tərs qaydada aparılır. Kodu dəyişdirməyə çalışın ki, rəqəmlər şərtdə göstərildiyi kimi, yəni 1-dən 100-ə qədər göstərilsin. Şərhlərdə həll yollarını gözləyirik!

Metod 4: semaforlardan istifadə edin

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();
    }
}
Semaforlar resursa daxil olmaq üçün sinxronizasiya vasitəsidir. SemaphoreJava-da semaforlar kitabxanailə təmsil olunurjava.util.concurrent.

Metod 5: iplərdən istifadə edin

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

Metod 6: Kitabxanalarınızı bilin!

Java çox maraqlı şeylərə malikdir. Məsələn, sinif java.util.BitSet. O, ölçüsü dinamik olaraq dəyişən bit vektoru yaratmağa imkan verir. Yəni, sinif obyekti və ya BitSetdəyərləri olan müəyyən bir sıralanmış bit dəstidir . Əvvəlcə bütün bitlər bərabərdir . Dəsti saxlamaq üçün vektoru proqramda təyin edilmiş və ya sıfırlanmış ən əhəmiyyətli bitə qədər saxlamaq üçün tələb olunan yaddaş miqdarı ayrılır - onu aşan bütün bitlər bərabər hesab olunur . truefalsefalsefalse
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);
    }
}

Metod 7: Vector sinfindən istifadə edin

Bəli, vektor sinfi köhnəlib və çox nadir hallarda istifadə olunur. Yenə də niyə olmasın?
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 materialları əsasında
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION