1. variáció (Vez.java): elöltesztelő ciklus használata
...
i=1;
while(i<=n) {
...
i=i+1;
}
...
public class Vez {
public static void main(String[] args) { int i=1,j=2,n=15; System.out.println("******************************");
|
2. variáció (VezV1.java): hátultesztelő ciklus használata
...
i=1;
do {
...
i=i+1;
} while(i<=n);
...
public class VezV1 {
public static void main(String[] args) { int i=1,j=3,n=15; System.out.println("Az elso "+n+
|
3. variáció (VezV2.java): rögzített lépésszámú ciklus használata
...
for(i=1;i<=n;i++) {
...
}
...
public class VezV2 {
public static void main(String[] args) { int i,j=2,n=16; System.out.println("2 elso "+n+
|
1. variáció (Vez1.java): egyirányú elágazás használata
Feladat: vizsgáljuk meg, hogy megadtunk-e parancssori paramétereket? Ha nem, adjunk hibaüzenetet. Ha igen, írassuk ki mindegyiket!
...
if(...) {
...
}
...
public class Vez1 {
public static void main(String[] args) { if(args.length==0) { System.out.println("keves parameter!"); System.exit(1); } System.out.println("a parancssori parameterek:"); for(int i=0;i<args.length;i++) { System.out.println("\t"+i+". parameter: "+args[i]); } } } |
A System.exit(...); utasítás azonnal befejezi a program futását.
Paraméterként egy (tetszőleges) egész szám adható meg, ezt hibakódként értelmezhetjük (de ezt a kódot sehol sem használjuk fel).
2. variáció (Vez1V1.java): az előző példa kétirányú elágazással
...
if(...) {
...
}
else {
...
}
...
public class Vez1V1 { public static void main(String[] args) { if(args.length==0) { System.out.println("keves parameter!"); System.exit(1); } else { System.out.println("parameterek szama: "+args.length); } System.out.println("a parancssori parameterek:"); for(int i=0;i<args.length;i++) { System.out.println("\t"+i+". parameter: "+args[i]); } } } |
1. variáció (Karakter.java): karakterek jellemzőinek kiírása
Feladat: adjunk meg egy karaktert parancssori paraméterként, és írassuk ki a legfontosabb jellemzőit!
...
if(...) {
...
}
else if(...) {
...
}
else if(...) {
...
}
else {
...
}
...
public class Karakter {
|
Figyeljük meg, hogy a jellemzok(...) eljárásban az if(...), else if(...) és else elágazások után csak egy utasítás áll.
Ilyenkor az utasításblokk kezdetét és végét jelző kapcsos zárójelek ( { ... } ) elhagyhatóak.
Kiegészítő anyag
2. variáció (Vez2V1.java): másodfokú egyenlet megoldása
public class Vez2V1 {
public static double masodfoku(double a,double b,double c,double x) { return a*x*x + b*x + c; } public static void main(String[] args) { if(args.length<3) { System.out.println("keves parameter!"); System.exit(1); } if(args.length>3) { System.out.println("sok parameter!"); System.exit(2); } double a=Double.parseDouble(args[0]); double b=Double.parseDouble(args[1]); double c=Double.parseDouble(args[2]); if(a==0) { System.out.println("nem masodfoku az egyenlet!"); System.exit(3); } double d=b*b-4.0*a*c; //diszkrimináns! if(d<0) { System.out.println("nincs valos megoldas"); } else if(d==0) { double x=-0.5*b/a; System.out.println("egy valos megoldas van"); System.out.println("x == "+x); System.out.println("a*x^2 + b*x + c == "+masodfoku(a,b,c,x)); } else { double x1,x2; x1=0.5*(-b+Math.sqrt(d))/a; x2=0.5*(-b-Math.sqrt(d))/a; System.out.println("ket valos megoldas van"); System.out.println("x1 == "+x1); System.out.println("a*x1^2 + b*x1 + c == "+masodfoku(a,b,c,x1)); System.out.println("x2 == "+x2); System.out.println("a*x2^2 + b*x2 + c == "+masodfoku(a,b,c,x2)); } } } |
Kiegészítő anyag vége
1. variáció (Vez3.java): többirányú elágazás egy egész számérték alapján
Feladat: olvassunk be parancssori paraméterként egy számot, és értelmezzük osztályzatként! Írassuk ki az osztályzatot szöveges formában!
...
switch(j) {
case 1:...;break;
case 2:...;break;
...
default: ...;
}
...
public class Vez3 {
public static void main(String[] args) { if(args.length<1) { System.out.println("keves parameter!"); System.exit(1); } String s; int j=Integer.parseInt(args[0]); switch(j) { case 1:s="elegtelen";break; case 2:s="elegseges";break; case 3:s="kozepes";break; case 4:s="jo";break; case 5:s="jeles";break; default:s="???"; } System.out.println("a megadott jegy: "+j+" ("+s+")"); } } |
1. variáció (Vez4.java): a konverziós hibáknak és az indexek túlcsordulásának a kezelése
...
try {
...
}
catch(ArrayIndexOutOfBoundsException e) {
...
}
catch(NumberFormatException e) {
...
}
catch(Exception e) {
...
}
...
public class Vez4 {
public static void main(String[] args) { try { String s; int j=Integer.parseInt(args[0]); switch(j) { case 1:s="elegtelen";break; case 2:s="elegseges";break; case 3:s="kozepes";break; case 4:s="jo";break; case 5:s="jeles";break; default:s="???"; } System.out.println("a megadott jegy: "+j+" ("+s+")"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("keves parameter!"); } catch(NumberFormatException e) { System.out.println("szamot kell megadni!"); } catch(Exception e) { System.out.println("mas hiba???"+e); } } } |
2. variáció (Vez4V1.java): az előző példa megoldása úgy, hogy csak a kivételhez vezető utasítás(ok) vannak a kivételkezelő blokkban
public class Vez4V1 {
public static void main(String[] args) { String s; int j=0; //kezdőértékadás a try blokk előtt try { j=Integer.parseInt(args[0]); } catch(NumberFormatException e) { System.out.println("szamot kell megadni!"); System.exit(1); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("keves parameter!"); System.exit(2); } catch(Exception e) { System.out.println("mas hiba???"+e); System.exit(3); } switch(j) { case 1:s="elegtelen";break; case 2:s="elegseges";break; case 3:s="kozepes";break; case 4:s="jo";break; case 5:s="jeles";break; default:s="???"; } System.out.println("a megadott jegy: "+j+" ("+s+")"); } } |
(1) Adjon meg parancssori paraméterként egy egész számot, és tárolja el az n
nevű (int típusú) változóban. Ha hiba lép fel, írassa ki a hibára vonatkozó
információkat és lépjen ki a programból. Írassa ki az alábbi két sorozat első n
elemét egymás mellett, táblázatos formában, az elemek sorszámának kiíratásával
együtt, valahogy így:
Sorszam | Elso sorozat | Masodik sorozat |
1 | 5 | 3 |
2 | 7 | 9 |
3 | 9 | 27 |
4 | 11 | 81 |
... | ... | ... |
(2) Adjon meg parancssori paraméterként egy egész számot, és tárolja el az n nevű (int típusú) változóban. Ha hiba lép fel, írassa ki a hibára vonatkozó információkat és lépjen ki a programból. Ezután n tárolt értékétől függően írasson ki egy szót: