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”.
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, @Override
esasy 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. Semaphore
Java-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, synpjava.util.BitSet
. Ululygy dinamiki üýtgeýän biraz wektor döretmäge mümkinçilik berýär. .Agny, synp obýekti BitSet
belli 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
GO TO FULL VERSION