13 Kasım 2024 23:23, Çarşamba 922 0
Merhaba..
Daha önce Java'da scanner nesnesi ve ternary operatörü kullanarak , 2 notu olan basit bir ders başarı durumu hesaplama programı yazmıştık.. Şimdi not girişi kontrollü (0-100) bir şekilde while ve if - else yapıları kullanarak biraz geliştirelim..
Kullancıdan veri alabilmek için , SCANNER nesnesini programa import edip , scanner tipinde bir nesne oluşturmamız gerekiyor. Aşağıda scanner değişkenini "input" olarak belirlemiş oluruz..
import java.util.Scanner; //scanner sinifi dahil ediliyor..
class Main {
public static void main(String[] args) {
// Scanner nesnesi olusturuluyor
Scanner input = new Scanner(System.in);
}
}
Program boyunca scanner değişkeni ayrıca dışında 7 değişkenimiz olacak;
basari_durumu değişkenini "STRING" diğerdeğişkenleri "INT" tipinde tanımlayabiliriz..
//değişkenler tanımlanıyor
int snv1,snv2,perf1,perf2,ortalama,basari_notu;
String basari_notu;
Kullanıcıdan 2 ders notu ve 2 performans notu alacağız. Ancak girilen notun 0 ile 100 arasında olması için girilen her notu WHILE döngüsü ile kontrol edip , uygun olmaması durumunda notu tekrar istemeliyiz..
Önce notu alalım...
// 1. Sinav Notu
System.out.println("1. Sinav Notunu Girin");
snv1 = input.nextInt();
Not kontrolünde , WHILE için 2 şartımız olacak; notun 0'dan küçük yada 100'den büyük olması. Bu iki durumda da bir uyarı yazısı yazdırıp not girişini aynı değişkene tekrar isteyeceğiz..
// not kontrolü 0-100 arasımı
while(snv1<0 || snv1>100) {
System.out.println("Not Gecersiz");
System.out.println("1. Sinav Notunu Tekrar Girin");
snv1 = input.nextInt();
}
Yukarıdaki while bloğuna göre , kullanıcının negatif bir sayı girmesi yada 100den büyük bir sayı girmesi halinde şart sağlanacak ve "Not Geçersiz" uyarısı ile not girişi tekrar istenecek. Dolayısıyla kullanıcı geçerli bir not girene kadar döngü devam edecektir..
Diğer 3 notuda yukarıdaki gibi almalıyız..
// 1. Sinav Notu
System.out.println("1. Sinav Notunu Girin");
snv1 = input.nextInt();
while(snv1<0 || snv1>100) {
System.out.println("Not Gecersiz");
System.out.println("1. Sinav Notunu Tekrar Girin");
snv1 = input.nextInt();
}
// 2. Sinav Notu
System.out.println("2. Sinav Notunu Girin");
snv2 = input.nextInt();
while(snv2<0 || snv2>100) {
System.out.println("Not Gecersiz");
System.out.println("2. Sinav Notunu Tekrar Girin");
snv2 = input.nextInt();
}
// 1. Performans Notu
System.out.println("1. Performans Notunu Girin");
perf1 = input.nextInt();
while(perf1<0 || perf1>100) {
System.out.println("Not Gecersiz");
System.out.println("1. Performans Notunu Tekrar Girin");
perf1 = input.nextInt();
}
// 2. Performans Notu
System.out.println("2. Performans Notunu Girin");
perf2 = input.nextInt();
while(perf2<0 || perf2>100) {
System.out.println("Not Gecersiz");
System.out.println("2. Performans Notunu Tekrar Girin");
perf2 = input.nextInt();
}
Bu yol programcılık için pek uygun bir yol değil. Aynı kodlar birbirini tekrar ediyor. Ancak JAVA'yı yeni yeni öğrenmeye başladığımız için , programın geri kalanına da , burdan itibaren devam edeceğiz. Ancak, FOR ve DİZİ'leri kullanrak not girişleri için yazılan kodları oldukça kısaltmak için aşağıdaki FOR bloğunu kullanabilirsiniz....
4 not girişi için de aynı işlemler yapıldığına göre her not için ayrı ayrı aynı kodları yazmak yerine FOR döngüsü ve DİZİ'leri kullanabiliriz. Notlar ve not isimleri için de ayrı değişkenler yerine dizileri kullanarak kodları oldukça kısaltabilriiz.
//değişkenler tanımlanıyor
int ortalama,basari_notu;,
// notlar için int dizi
int[] notlar = new int[4];
//not isimleri için string dizi
String[] not_isimleri = new String[] {"1. Sınav","2. Sınav","1. Performans","2. Performans"};
//not girişleri
for (int i=0;i<=3;i++) {
System.out.println(not_isimleri[i]+" Notunu Girin");
notlar[i] = input.nextInt();
while(notlar[i]<0 || notlar[i]>100) {
System.out.println("Not Gecersiz");
System.out.println(not_isimleri[i]+" Notunu Tekrar Girin");
notlar[i] = input.nextInt();
}
}
Yukarıdaki blok ile 4 notu , for döngüsü ile tek tek alıp , notlar dizisine ekleriz. Not isimleri de, not_isimleri dizisine önceden tanımlanıp , döngü içinde de i'nin değerine göre ekranda gösterilir. Tabi programın ilerleyen bölümlerinde notlara , notlar dizisi üzerinden ulaşmak gerekir..
Notları aldığımıza göre ortalama ve başarı notunu hesaplayalım. Ortalama için 4 notu toplayıp 4'e böleceğiz. Başası notu için ise, program için istenenler bölümüde yazılan puan - not karşılıklarına göre if-else-if bloğu oluşturacağız..
// ortalama hesapalama ve yazdırma
ortalama=(snv1+snv2+perf1+perf2)/4;
System.out.println("Ortalamaniz : "+ ortalama);
// başarı notu hesaplama ve yazdırma
if (ortalama>=0 && ortalama<=24) {basari_notu=0;}
else if (ortalama>=25 && ortalama<=49) { basari_notu=1;}
else if (ortalama>=50 && ortalama<=59) { basari_notu=2;}
else if (ortalama>=60 && ortalama<=69) { basari_notu=3;}
else if (ortalama>=70 && ortalama<=84) { basari_notu=4;}
else { basari_notu=5;}
System.out.println("Basari Notunuz : "+ basari_notu);
Ortalama ve Başarı notu hesaplanıp yazdıırldığına göre , başarı durumunu da belirleyip yazdıralım..
//başari durumu belirleme ve yazdirma
if (basari_notu>=2) {basari_durumu="Gectiniz..";}
else {basari_durumu="Kaldiniz..";}
System.out.println("Basari Durumunuz : "+ basari_durumu);
Böylece programı bitirmiş olduk. Aşağıda tüm java kodlarını ve ekran görüntüsünü görebilirsiniz...
import java.util.Scanner; //scanner sinifi dahil ediliyor..
class Main {
public static void main(String[] args) {
// Scanner nesnesi olusturuluyor
Scanner input = new Scanner(System.in);
//değişkenler tanımlanıyor
int snv1,snv2,perf1,perf2,ortalama,basari_notu;
String basari_durumu;
// 2. Sinav Notu
System.out.print("1. Sinav Notunu Girin : ");
snv1 = input.nextInt();
while(snv1<0 || snv1>100) {
System.out.println("Not Gecersiz");
System.out.print("1. Sinav Notunu Tekrar Girin : ");
snv1 = input.nextInt();
}
// 2. Sinav Notu
System.out.print("2. Sinav Notunu Girin : ");
snv2 = input.nextInt();
while(snv2<0 || snv2>100) {
System.out.println("Not Gecersiz");
System.out.print("2. Sinav Notunu Tekrar Girin : ");
snv2 = input.nextInt();
}
// 1. Performans Notu
System.out.print("1. Performans Notunu Girin : ");
perf1 = input.nextInt();
while(perf1<0 || perf1>100) {
System.out.println("Not Gecersiz");
System.out.print("1. Performans Notunu Tekrar Girin : ");
perf1 = input.nextInt();
}
// 2. Performans Notu
System.out.print("2. Performans Notunu Girin : ");
perf2 = input.nextInt();
while(perf2<0 || perf2>100) {
System.out.println("Not Gecersiz");
System.out.print("2. Performans Notunu Tekrar Girin : ");
perf2 = input.nextInt();
}
// ortalama hesapalama ve yazdırma
ortalama=(snv1+snv2+perf1+perf2)/4;
System.out.println("Ortalamaniz : "+ ortalama);
// başarı notu hesaplama ve yazdırma
if (ortalama>=0 && ortalama<=24) {basari_notu=0;}
else if (ortalama>=25 && ortalama<=49) { basari_notu=1;}
else if (ortalama>=50 && ortalama<=59) { basari_notu=2;}
else if (ortalama>=60 && ortalama<=69) { basari_notu=3;}
else if (ortalama>=70 && ortalama<=84) { basari_notu=4;}
else { basari_notu=5;}
System.out.println("Basari Notunuz : "+ basari_notu);
//başari durumu belirleme ve yazdirma
if (basari_notu>=2) {basari_durumu="Gectiniz..";}
else {basari_durumu="Kaldiniz..";}
System.out.println("Basari Durumunuz : "+ basari_durumu);
}
}
Görüşmek üzere...
Lütfen yorumlarınızda saygılı, yapıcı ve anlaşılır bir dil kullanın.
Küfür, hakaret ya da spam içerikler onaylanmaz.