JavaRush /Java Blog /Random-ID /Bagaimana cara mencetak angka dari 1 hingga 100 di Java t...

Bagaimana cara mencetak angka dari 1 hingga 100 di Java tanpa loop dan ketentuan?

Dipublikasikan di grup Random-ID
Posting ini terutama ditujukan bagi mereka yang mempersiapkan wawancara. Di sinilah mereka suka menanyakan teka-teki semacam ini. Faktanya, tugas yang ada lebih mudah dan logis untuk diselesaikan dengan siklus dan kondisi. Dan menurut kami setiap siswa JavaRush akan dapat melakukan ini setelah pencarian Sintaks Java tingkat keempat . Tetapi sebagian besar metode di atas dirancang untuk mereka yang sudah “memasuki” Java Multithreading . Catatan: Ini tentang tidak menggunakan loop dan kondisi secara langsung. Faktanya, mereka secara implisit “dibangun ke dalam” sebagian besar solusi yang disebutkan. Bagaimana cara mencetak angka dari 1 hingga 100 di Java tanpa loop dan ketentuan?  - 1
Mungkin Anda punya solusi sendiri untuk masalah ini? Bagikan di komentar!

Jadi, metode 1: tulis saja!

Tentu saja hal pertama yang terlintas di benak seorang pemula adalah pencarian langsung. Tidak rasional, tetapi sederhana dan dapat dimengerti. Persis dengan cara yang sama kami memecahkan masalah di JavaRush tingkat pertama.
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"
);
Tapi, harus Anda akui, itu membosankan. Oleh karena itu, Anda bisa menggunakan cara kedua.

Metode 2: gunakan string dan ganti 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));

    }
Anotasi @Overridemenunjukkan bahwa kita akan mengganti metode kelas dasar. Dalam hal ini kami mengesampingkan toString. Faktanya, ini, seperti hampir semua solusi berikut, mengandung loop. Siklus ini secara sederhana dimasukkan ke dalam metode yang digunakan.

Metode 3: gunakan rekursi

Untuk memahami rekursi, Anda perlu memahami rekursi. Rekursi, atau fungsi yang memanggil dirinya sendiri, adalah topik yang sangat menarik, dan tidak selalu dapat dimengerti dengan segera. Di JavaRush itu tercakup dalam pencarian Java Collections (untuk kelengkapan), namun sebenarnya dapat dipahami dan digunakan (atau tidak digunakan... mengapa - Anda akan mengetahuinya saat mempelajari topik!) jauh lebih awal, segera setelah mempelajari loop dan lompatan bersyarat.
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
    }

}
Catatan:di sini keluarannya tidak dibuat secara langsung, tetapi dalam urutan terbalik. Coba ubah kodenya agar angka yang ditampilkan sesuai kondisi yaitu dari 1 menjadi 100. Kita tunggu solusinya di kolom komentar!

Metode 4: gunakan semafor

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 adalah sarana sinkronisasi untuk mengakses sumber daya. Di Java, semaphore diwakili olehSemaphoreperpustakaanjava.util.concurrent.

Metode 5: gunakan utas

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

Metode 6: Kenali perpustakaan Anda!

Java memiliki banyak hal menarik. Misalnya kelas java.util.BitSet. Ini memungkinkan Anda membuat vektor bit yang ukurannya berubah secara dinamis. Artinya, objek kelas BitSetadalah sekumpulan bit terurut tertentu dengan nilai trueatau false. Awalnya semua bit sama false. Untuk menyimpan himpunan, jumlah memori yang diperlukan untuk menyimpan vektor hingga bit paling signifikan yang disetel atau disetel ulang dalam program dialokasikan - semua bit yang melebihinya dianggap sama 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);
    }
}

Metode 7: Gunakan kelas Vector

Ya, kelas vektor sudah usang dan jarang digunakan. Namun mengapa tidak?
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);
  }
}
Berdasarkan materi dari Quora
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION