“在在线IDE中找不到或加载主类”

问题描述 投票:-2回答:1
package com.company;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;

public class Main {

    //Objeler
    static int hak_sayisi = 5;
    static int kazanilacak_puan,secilmissayi = 0,mevcut_puan = 0;
    static String sayı_aralık;


    // Artış miktarları belirtilen lvl'e kadardır.
    static int lvl_limit2 = 100; // Artış : 25
    static int lvl_limit3 = 300; // Artış : 50
    static int lvl_limit4 = 800; // Artış : 100
    static int lvl_limit5 = 1800; // Artış : 200

    // Onaylar
    static boolean lvl5=false;
    static boolean lvl4=false;
    static boolean lvl3=false;
    static boolean lvl2=false;
    static boolean lvl1=false;
    // Aralık Araçları
    static int max=0,min=1;




    public static void main(String[] args) {
        // Hoşgeldin ve Kurallar Bölümü
        System.out.println("Merhaba, 'Sayı Tahmin Etmece' oyununa hoşgeldiniz! ");
        System.out.println("Oyun şöyle işliyor:");
        System.out.print("1-)Öncelikle bilgisayar seviyenize göre belirli aralıklarda rastgele bir sayı seçer. ");
        System.out.print("Bu aralıklar şöyledir: \n1.Seviye => 1 ile 20 arası(20 dahil) \n2.Seviye => 1 ile 30 arası(30 dahil) \n3.Seviye => 1 ile 40 arası(40 dahil) \n4.Seviye => 1 ile 50 arası(50 dahil) \n5.Seviye => 1 ile 75 arası(75 dahil)\n");
        System.out.println("2-)Daha sonrasında siz seçilen sayıyı tahmin etmeye çalışırsınız. Eğer bu sayıyı doğru tahmin ederseniz bulunduğunuz seviyeye göre puanınız artar.");
        System.out.println("Ayrıca, her seviyede doğru tahmin karşılığında verilen puan bir önceki seviyede verilen puanın 2 katıdır. İlk seviyede doğru tahmin karşılığında kazanacağınız puan '25'tir.");
        System.out.println("3-)Kazandığınız puanlar sizin seviyeleri geçmenizi sağlar. Puanınız sürekli artar asla azalmaz. Belli bir puana geldikçe seviye yükselirsiniz. Seviyelerin puan tablosu:");
        System.out.println("1. Seviye => 0 (Başladığınız seviye) \n2.Seviye => "+Integer.toString(lvl_limit2) + "\n3.Seviye => "+Integer.toString(lvl_limit3)+"\n4.Seviye => "+Integer.toString(lvl_limit4)+"\n5.Seviye => "+Integer.toString(lvl_limit5));
        System.out.println("\nOyunun nasıl işlediğini öğrendiğinize göre oynamak ister misiniz? Oynamak için '1',oyundan çıkmak için '2' yazınız. ");

        // Oyuna giriş bölümü
        Scanner cevap = new Scanner(System.in);
        try{
            if(cevap.nextInt() == 1)
            {
                System.out.println("*\n*\n*\nOyuna girmiş bulunmaktasınız!");
                dongu();
            }
            else
            {
                System.exit(0);
            }
        }
        catch(InputMismatchException e1)
        {
            try{
                System.out.print("Hataya düştünüz.Aynısını bir kere daha yaparsanız oyundan çıkacaksınız.Lütfen sayı formatında giriniz. Örnek: 1,2. Sayınızı giriniz: ");
                cevap = new Scanner(System.in);

                if(cevap.nextInt() == 1)
                {
                    System.out.println("*\n*\n*\nOyuna girmiş bulunmaktasınız!");
                    dongu();
                }
                else
                {
                    System.exit(0);
                }
            }
            catch(InputMismatchException e2)
            {
                System.out.println("*\nArtarda iki kere hatalı girdiğiniz için oyundan çıkarıldınız.");
                System.exit(0);
            }


        }

    }
    public static void dongu()
    {

        while(true)
        {
            if(hak_sayisi == 0)
            {
                System.out.println("Size verilen haklar tükenmiştir.");
                System.out.println("Oyunu tekrardan oynamak için '1',oyundan çıkmak için '2' yazınız.");
                Scanner cevap = new Scanner(System.in);
                if(cevap.nextInt() == 1)
                {
                    dongu();
                    break;
                }
                else
                {
                    System.exit(0);
                }
            }
            else
            {
                // Program'a random sayı seçtirme bölümü
                if(mevcut_puan >= lvl_limit5)
                {
                    System.out.println("Son seviyede geziniyorsunuz!");

                    max = 75;
                    sayı_aralık = "1'den 75'ye kadar (75 dahil)";

                    if(lvl5 == false) // Oyuna devam ederse burası bir daha sorulmuyor.
                    {

                        kazanilacak_puan = kazanilacak_puan * 2;
                        System.out.println("*\n*\n*\nYeni seviye! Artık 5.Seviyedesiniz! Hedeflerinize ulaştınız!");
                        System.out.println("Oyuna devam etmek için '1',tekrardan oynamak için '2',oyundan çıkmak için 3 kere ' '3' yazıp enter basın ' bunu uygulayınız. "); // 3 Kere yazdırmamın sebebi 1 kere '3' yazınca algılamıyor. 3 kere yazınca algılıyor. Fakat bu sadece oyundan çıkmak için.

                        Scanner cevap = new Scanner(System.in);
                        if(cevap.nextInt() == 1)
                        {
                            lvl5 = true; // Oyuna devam ettiği için tekrardan sordurmak istemedik.
                        }
                        else if(cevap.nextInt() == 2)
                        {
                            dongu();
                            break;
                        }
                        else if(cevap.nextInt() == 3)
                        {
                            System.out.println("Oyundan çıktınız.");
                            System.exit(0);
                        }


                    }

                }
                else if(mevcut_puan >= lvl_limit4)
                {
                    max = 50;
                    sayı_aralık = "1'den 50'ye kadar (50 dahil)";
                    if(lvl4 == false)
                    {
                        kazanilacak_puan = kazanilacak_puan * 2;
                        System.out.println("*\n*\n*\nYeni seviye! Artık 4.Seviyedesiniz! Yeni hedefiniz => "+Integer.toString(lvl_limit5));
                        lvl4 = true;

                    }
                }
                else if(mevcut_puan >= lvl_limit3)
                {
                    max = 40;
                    sayı_aralık = "1'den 40'ye kadar (40 dahil)";
                    if(lvl3 == false)
                    {
                        kazanilacak_puan = kazanilacak_puan * 2;
                        lvl3 = true;
                        System.out.println("*\n*\n*\nYeni seviye! Artık 3.Seviyedesiniz! Yeni hedefiniz => "+Integer.toString(lvl_limit4));
                    }
                }
                else if(mevcut_puan >= lvl_limit2)
                {
                    max = 30;
                    sayı_aralık = "1'den 30'ye kadar (30 dahil)";
                    if(lvl2 == false)
                    {
                        kazanilacak_puan = kazanilacak_puan * 2;
                        lvl2 = true;
                        System.out.println("*\n*\n*\nYeni seviye! Artık 2.Seviyedesiniz! Yeni hedefiniz => "+Integer.toString(lvl_limit3));
                    }

                }
                else if(mevcut_puan<lvl_limit2)
                {
                    max = 20;
                    sayı_aralık = "1'den 20'ye kadar (20 dahil)";
                    if(lvl1 == false)
                    {
                        kazanilacak_puan = 25;
                        lvl1 = true;
                    }
                }

                secilmissayi = ThreadLocalRandom.current().nextInt(min, max + 1); // Random rnd = New Random(); denedim. Fakat aralık problemi yaşadığımdan dolayı Java 1.7 ve sonrasında gelen bu yolu kullandım.

                System.out.println(secilmissayi);

                // Tahmin alma
                System.out.print("*\nLütfen "+sayı_aralık+" seçilen rastgele sayıyı tahmin ediniz: ");
                Scanner klavye_giris = new Scanner(System.in);

                int tahmin =0;

                try{
                    tahmin = klavye_giris.nextInt();
                }
                catch(InputMismatchException e)
                {
                    try{
                        System.out.print("Hataya düştünüz.Aynısını bir kere daha yaparsanız oyundan çıkacaksınız.Lütfen sayı formatında giriniz. Örnek: 24,11,52. Sayınızı giriniz: ");
                        klavye_giris = new Scanner(System.in);
                        tahmin = klavye_giris.nextInt();
                    }
                    catch(InputMismatchException e1)
                    {
                        System.out.println("*\nArtarda iki kere hatalı girdiğiniz için oyundan çıkarıldınız.");
                        System.exit(0);
                    }
                }



                // Tahmin kontrol
                if(tahmin == secilmissayi)
                {
                    mevcut_puan += kazanilacak_puan;
                    System.out.println("*\nBravo! Sayıyı doğru tahmin ettiniz. Sayı => "+Integer.toString(tahmin) + " Mevcut Puanınız => "+mevcut_puan + " Artış Miktarı => "+kazanilacak_puan);
                }
                else
                {
                    hak_sayisi -= 1;
                    System.out.println("*\nMaalesef, tahmininiz yanlış. Size verdiğimiz hakların " + Integer.toString(5-hak_sayisi) + " tanesini harcadınız. Geriye "+Integer.toString(hak_sayisi)+ " hakkınız kaldı."+ " Mevcut Puanınız => "+mevcut_puan);
                    System.out.println("");
                }
            }
        }
    }
}

此代码在IntelliJ IDEA中正常工作,但是当我尝试在online IDE中运行它时,出现此错误:

Error: Could not find or load main class Main
Caused by: java.lang.ClassNotFoundException: Main

这是什么意思,我该如何解决?

java
1个回答
0
投票
package com.company;

摆脱顶部的软件包名称。如果JDoodle在包中,则找不到Main

© www.soinside.com 2019 - 2024. All rights reserved.