Gyakorlati alapok
Lépcsőzetes gyakorlat
Ebben a fejezetben egy folyamatosan nehezülő feladatot "játszhatunk" végig. A sorszámok alatti szöveg a specifikáció, azaz a feladat leírása, amelyet le kell programoznunk, az utána jövő kód pedig a megoldás, amelyre lehetőség szerint ne nézzünk rá. Amint azt már többször hangsúlyoztam (és fogom is)...
...a szöveg helyes értelmezése már fél siker, ne kapkodjunk tehát benne!
A tökéletes vizsgahelyzetet esetleg úgy tudjuk még fokozni, hogy előre jól meghatározott időkeretet adunk magunknak, magyarán benyomjuk a stopperóra gombját!
1.
Írjon Java-programot, amely kiírja a hárommal osztható számokat 30-ig úgy,
hogy minden szám után kihagy egy sort:
public class Main {
public static void main(String[] args) {
for(int i = 1; i <= 30; i++){
if(i % 3 == 0){
System.out.println(i);
System.out.println();
}
}
}
}
Végeredmény:
3
6
9
12
15
18
21
24
27
30
2.
Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó
által megadott határig vízszintesen és a számok között egy szóköznyit
kihagyva:
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Kérem adja meg számot!");
int number = scanner.nextInt();
for(int i = 1; i <= number; i++){
if(i % 3 == 0){
System.out.println(i + " ");
}
}
scanner.close();
}
}
Végeredmény:
3 6 9 12 15 18
3.
Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó
által megadott határig vízszintesen és a számok között egy szóköznyit
kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál, akkor
hibaüzenettel jelezze ezt és a program álljon le:
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Kérem adja meg számot!");
int number = scanner.nextInt();
if(number > 100){
System.out.println("Túl nagy szám!");
System.exit(0);
}
for(int i = 1; i <= number; i++){
if(i % 3 == 0){
System.out.println(i + " ");
}
}
scanner.close();
}
}
Végeredmény:
101
Túl nagy szám!
4.
Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó
által megadott határig vízszintesen és a számok között egy szóköznyit
kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb
3-nál, akkor hibaüzenettel jelezze ezt és a program álljon le:
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Kérem adja meg számot!");
int number = scanner.nextInt();
if(number > 100 || number < 3){
System.out.println("Túl nagy vagy túl
kicsi szám!");
System.exit(0);
}
for(int i = 1; i <= number; i++){
if(i % 3 == 0){
System.out.println(i + " ");
}
}
scanner.close();
}
}
Végeredmény:
2
Túl nagy vagy túl kicsi szám!
5.
Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó
által megadott határig vízszintesen és a számok között egy szóköznyit
kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb
3-nál, akkor hibaüzenettel jelezze ezt és a program ne is lépjen tovább, amíg
ezt a felhasználó ki nem javította:
public class Main {
public static void main(String[] args) {
Scanner scanner = new
Scanner(System.in);
int number;
do{
System.out.println("Kérem adja meg
számot!");
number = scanner.nextInt();
}while(number > 100 || number < 3);
for(int i = 1; i <= number; i++){
if(i % 3 == 0){
System.out.println(i + " ");
}
}
scanner.close();
}
}
Végeredmény:
Kérem adja meg számot!
2
Kérem adja meg számot!
101
Kérem adja meg számot!
30
3 6 9 12 15 18 21 24 27 30
6.
Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó
által megadott határig vízszintesen és a számok között egy szóköznyit
kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb
3-nál és már kétszer hibázott a számbevitelben, akkor hibaüzenettel jelezze
ezt és a program álljon le:
public class Main {
public static void main(String[] args) {
Scanner scanner = new
Scanner(System.in);
int number;
int rosszSzam = 0;
do{
rosszSzam++;
System.out.println("Kérem adja meg
számot!");
number = scanner.nextInt();
if(rosszSzam == 2){
System.out.println("Már 2x hibázott! Kilépés!");
System.exit(0);
}
}while(number > 100 || number < 3);
for(int i = 1; i <= number; i++){
if(i % 3 == 0){
System.out.println(i + " ");
}
}
scanner.close();
}
}
Végeredmény:
Kérem adja meg számot!
2
Kérem adja meg számot!
101
Már 2x hibázott! Kilépés!
7.
Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó
által megadott határig vízszintesen és a számok között egy szóköznyit
kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb
3-nál és már kétszer hibázott a számbevitelben, akkor hibaüzenettel jelezze
ezt és a program álljon le! Egyúttal minden kódfunkciót külön metódusba
tegyen:
import java.util.Scanner;
public class Main3 {
static int input() {
Scanner scanner = new Scanner(System.in);
int number;
int rosszSzam = 0;
do{
rosszSzam++;
System.out.println("Kérem adja meg
számot!");
number = scanner.nextInt();
if(rosszSzam == 2){
System.out.println("Már 2x hibázott! Kilépés!");
System.exit(0);
}
}while(number > 100 || number < 3);
scanner.close();
return number;
}
static void arrayNumbers(int number) {
for(int i = 1; i <= number; i++){
if(i % 3 == 0){
System.out.println(i + " ");
}
}
}
public static void main(String[] args) {
int number = input();
arrayNumbers (number);
}
}
Végeredmény:
Kérem adja meg számot!
2
Kérem adja meg számot!
101
Már 2x hibázott! Kilépés!
A különutas lehetőséggel a feladat egyre bonyolultabbá válik, hiszen a kódfunkciókat sokféleképpen lehet szétosztani, bár igaz, hogy legtöbbször csupán egy optimális létezik. Ebből a szempontból a fenti kód nem optimális, mert például még el lehetett volna választani egymástól a számítási és a kiírási metódust. A fenti kód behozhatatlan előnye azonban, hogy az előző, 6. feladatra alapul, így kis másolással és kódigazítással 10 perc alatt végeztem vele. Ez vizsgahelyzetben óriási előny. Ilyen esetekben ezt az eljárást javaslom és ha marad időnk, akkor a vizsga végén még visszatérhetünk kódszépítgetés végett. De előtte a már meglévő megoldásunkat ne felejtsük elmenteni!