Çözüldü "A cannot be resolved to a variable" hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

AntenioTR

Decapat
Katılım
2 Aralık 2022
Mesajlar
31
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar kodlamaya yeni başladım nerede hata yapıyorum?


----------------- Kodlar -------------------
Java:
import java.util.Scanner;

public class Merkez {

    public static void main(String[] args) {
         
          Scanner scanner = new Scanner(System.in);
         
      
            System.out.print("Ekinin adini giriniz: ");
            String ekinadi = scanner.nextLine();
            System.out.print("Tohum fiyatini giriniz: ");
            Integer tohum = scanner.nextInt();
            System.out.print("Satis fiyatini giriniz: ");
            Integer satis = scanner.nextInt();
            System.out.print("Ekilecek alani giriniz: ");
            Integer alan = scanner.nextInt();
        
            System.out.println("****Hizli ek gubresi seciniz***");
            System.out.println("1 -> Gubre yok");
            System.out.println("2 -> Ekin olusumunu kamcilar. Yetisme hizini %10 arttirir");
            System.out.println("3 -> Ekin olusumunu kamcilar. Yetisme hizini %25 arttirir");
            System.out.println("4 -> Ekin olusumunu kamcilar. Yetisme hizini %33 arttirir");
        
            System.out.print("Secimininizi giriniz(Rakam olarak): ");
            Integer secimgubre = scanner.nextInt();
         
            if(secimgubre == 1) {
                int gubre = 1;
            }
            
            else if(secimgubre == 2) {
                double gubre = 1.1;

        }
            else if(secimgubre == 3) {
                double gubre = 1.25;

        }
            else if(secimgubre == 4) {
                double gubre = 1.33;

        }
            System.out.println(gubre);
    }
}
 
Son düzenleyen: Moderatör:
Çözüm

Değeri tek seferde yazdırılabilir hocam. İf else yerine Switch-Case kullanması gerekir bu yapı için.

Ek olarak her if içinde değişken tanımlamak yerine global alana bir tane double değişken tanımlaması yeterli.

Bu şekilde olmalı;
Java:
import java.util.Scanner;

public class Merkez{

    public static void main(String[] args) {

            Scanner scanner = new Scanner(System.in);

            System.out.print("Ekinin adini giriniz: ");
            String ekinadi = scanner.nextLine();
            System.out.print("Tohum fiyatini giriniz: ");
            Integer tohum = scanner.nextInt();
            System.out.print("Satis fiyatini giriniz: ");
            Integer satis = scanner.nextInt();
            System.out.print("Ekilecek alani giriniz: ");
            Integer alan = scanner.nextInt();

            System.out.println("****Hizli ek gubresi seciniz***");
            System.out.println("1 -> Gubre yok");
            System.out.println("2 -> Ekin olusumunu kamcilar. Yetisme hizini %10 arttirir");
            System.out.println("3 -> Ekin olusumunu kamcilar. Yetisme hizini %25 arttirir");
            System.out.println("4 -> Ekin olusumunu kamcilar. Yetisme hizini %33 arttirir");

            System.out.print("Secimininizi giriniz(Rakam olarak): ");
            Integer secimgubre = scanner.nextInt();

            double gubre = 0;

            switch(secimgubre){
         
               case 1:
               gubre = 1;
               break;

               case 2:
               gubre = 1.1;
               break;

               case 3:
               gubre = 1.25;
               break;

               case 4:
               gubre = 1.33;
               break;

            }

            System.out.println(gubre);
      }
}
System.out.println(gubre); kısmını if statementlarının içine alın. Öteki türlü gubre değişkenini tanımlayamıyor. Şu şekilde yani:

Java:
import java.util.Scanner;

public class Merkez{

    public static void main(String[] args) {

            Scanner scanner = new Scanner(System.in);

            System.out.print("Ekinin adini giriniz: ");
            String ekinadi = scanner.nextLine();
            System.out.print("Tohum fiyatini giriniz: ");
            Integer tohum = scanner.nextInt();
            System.out.print("Satis fiyatini giriniz: ");
            Integer satis = scanner.nextInt();
            System.out.print("Ekilecek alani giriniz: ");
            Integer alan = scanner.nextInt();

            System.out.println("****Hizli ek gubresi seciniz***");
            System.out.println("1 -> Gubre yok");
            System.out.println("2 -> Ekin olusumunu kamcilar. Yetisme hizini %10 arttirir");
            System.out.println("3 -> Ekin olusumunu kamcilar. Yetisme hizini %25 arttirir");
            System.out.println("4 -> Ekin olusumunu kamcilar. Yetisme hizini %33 arttirir");

            System.out.print("Secimininizi giriniz(Rakam olarak): ");
            Integer secimgubre = scanner.nextInt();

            if(secimgubre == 1) {
                int gubre = 1;
                System.out.println(gubre);
            }

            else if(secimgubre == 2) {
                double gubre = 1.1;
                System.out.println(gubre);
            }

            else if(secimgubre == 3) {
                double gubre = 1.25;
                System.out.println(gubre);
            }

            else if(secimgubre == 4) {
                double gubre = 1.33;
                System.out.println(gubre);
            }
      }
}

Ben bu şekilde çözdüm. Ben de Java'da epey yeniyim, belki başka bir olayı olabilir.
 

Değeri tek seferde yazdırılabilir hocam. İf else yerine Switch-Case kullanması gerekir bu yapı için.

Ek olarak her if içinde değişken tanımlamak yerine global alana bir tane double değişken tanımlaması yeterli.

Bu şekilde olmalı;
Java:
import java.util.Scanner;

public class Merkez{

    public static void main(String[] args) {

            Scanner scanner = new Scanner(System.in);

            System.out.print("Ekinin adini giriniz: ");
            String ekinadi = scanner.nextLine();
            System.out.print("Tohum fiyatini giriniz: ");
            Integer tohum = scanner.nextInt();
            System.out.print("Satis fiyatini giriniz: ");
            Integer satis = scanner.nextInt();
            System.out.print("Ekilecek alani giriniz: ");
            Integer alan = scanner.nextInt();

            System.out.println("****Hizli ek gubresi seciniz***");
            System.out.println("1 -> Gubre yok");
            System.out.println("2 -> Ekin olusumunu kamcilar. Yetisme hizini %10 arttirir");
            System.out.println("3 -> Ekin olusumunu kamcilar. Yetisme hizini %25 arttirir");
            System.out.println("4 -> Ekin olusumunu kamcilar. Yetisme hizini %33 arttirir");

            System.out.print("Secimininizi giriniz(Rakam olarak): ");
            Integer secimgubre = scanner.nextInt();

            double gubre = 0;

            switch(secimgubre){
         
               case 1:
               gubre = 1;
               break;

               case 2:
               gubre = 1.1;
               break;

               case 3:
               gubre = 1.25;
               break;

               case 4:
               gubre = 1.33;
               break;

            }

            System.out.println(gubre);
      }
}
 
Son düzenleyen: Moderatör:
Çözüm
Öncelikle teşekkürler, ben sondaki print kısmını örnek olarak yazdım. Kullanıcıdan aldığım seçime göre ileride o değeri yetişme süresiyle çarpıp gübre türüne göre yeni yetişme süresini belirlemek istiyorum. Sizin yaptığınız şekilde kullanırsam olur mu? Mesela:

Java:
import java.util.Scanner;



public class Merkez {



    public static void main(String[] args) {

          

          Scanner scanner = new Scanner(System.in);

          

        

            System.out.print("Ekinin adini giriniz: ");

            String ekinadi = scanner.nextLine();

            System.out.print("Tohum fiyatini giriniz: ");

            Integer tohum = scanner.nextInt();

            System.out.print("Satis fiyatini giriniz: ");

            Integer satis = scanner.nextInt();

            System.out.print("Ekilecek alani giriniz: ");

            Integer alan = scanner.nextInt();

            System.out.print("Yetisme suresi giriniz ");

            Integer yetismesuresi = scanner.nextInt();

          

            System.out.println("****Hizli ek gubresi seciniz***");

            System.out.println("1 -> Gubre yok");

            System.out.println("2 -> Ekin olusumunu kamcilar. Yetisme hizini %10 arttirir");

            System.out.println("3 -> Ekin olusumunu kamcilar. Yetisme hizini %25 arttirir");

            System.out.println("4 -> Ekin olusumunu kamcilar. Yetisme hizini %33 arttirir");

          

            System.out.print("Secimininizi giriniz(Rakam olarak): ");

            Integer secimgubre = scanner.nextInt();

          

            if(secimgubre == 1) {

                int gubre = 1;

            }

              

            else if(secimgubre == 2) {

                double gubre = 0.9;



        }

            else if(secimgubre == 3) {

                double gubre = 0.75;



        }

            else if(secimgubre == 4) {

                double gubre = 0.66;



        }

            System.out.println(yetismesuresi*gubre);

    }

}
 
Son düzenleyen: Moderatör:
@AntenioTR Benim attığım kodu geliştirerek istediğiniz yapıyı kolay bir şekilde yapabilirsiniz. Takıldığınz bir yer olursa her zaman sorabilirsiniz
 
@AntenioTR benim attığım kodu geliştirerek istediğiniz yapıyı kolay bir şekilde yapabilirsiniz. Takıldığınz bir yer olursa her zaman sorabilirsiniz

Sizin attığınız kodda da "the local variable gubre may not have been initialized" hatası alıyorum.
 
Son düzenleyen: Moderatör:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…