• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java problem z wyeksportowaniem

Object Storage Arubacloud
0 głosów
92 wizyt
pytanie zadane 26 maja 2018 w Java przez james30k Bywalec (2,260 p.)

Witam!

Chciałbym móc wyeksportować projekt, by chodził on jako normalna aplikacja lecz nie mogę, bo pojawiają się następujące błędy:

Description    Resource    Path    Location    Type
Resource leak: 'choice' is never closed    Main.java    /Main/src    line 17    Java Problem
Description    Resource    Path    Location    Type
Resource leak: 'choice' is never closed    Main.java    /Main/src    line 54    Java Problem
Description    Resource    Path    Location    Type
Resource leak: 'howMuch' is never closed    Main.java    /Main/src    line 138    Java Problem
Description    Resource    Path    Location    Type
Resource leak: 'quantity' is never closed    Main.java    /Main/src    line 58    Java Problem
 

import java.util.Scanner;
 
public class Main 
{
 
    public static void main(String[] args) {
 
        Kasa kasa = new Kasa();
 
        while(true) {
            initMenu(kasa);
        }
 
    }
 
    public static void initMenu(Kasa kasa) {
        Scanner choice = new Scanner(System.in);
 
        System.out.println("Wpisz 1 aby wpłacić do Kasy");
        System.out.println("Wpisz 2 aby wypłacić z Kasy");
        System.out.println(sum(kasa));
 
        int userInput = choice.nextInt();
 
        if(userInput == 1) {
            contribution(kasa);
        }
        else if(userInput == 2) {
            withdraw(kasa);
        }
        else {
            System.out.println("Niepoprawny wybór");
        }
    }
 
    public static void contribution(Kasa kasa) {
 
        System.out.println("Jeśli chcesz wpłacić banknoty 500zł, to wpisz 1");
        System.out.println("Jeśli chcesz wpłacić banknoty 200zł, to wpisz 2");
        System.out.println("Jeśli chcesz wpłacić banknoty 100zł, to wpisz 3");
        System.out.println("Jeśli chcesz wpłacić banknoty 50zł, to wpisz 4");
        System.out.println("Jeśli chcesz wpłacić banknoty 20zł, to wpisz 5");
        System.out.println("Jeśli chcesz wpłacić banknoty 10zł, to wpisz 6");
        System.out.println("Jeśli chcesz wpłacić monety 5zł, to wpisz 7");
        System.out.println("Jeśli chcesz wpłacić monety 2zł, to wpisz 8");
        System.out.println("Jeśli chcesz wpłacić monety 1zł, to wpisz 9");
        System.out.println("Jeśli chcesz wpłacić monety 50gr, to wpisz 10");
        System.out.println("Jeśli chcesz wpłacić monety 20gr, to wpisz 11");
        System.out.println("Jeśli chcesz wpłacić monety 10gr, to wpisz 12");
        System.out.println("Jeśli chcesz wpłacić monety 5gr, to wpisz 13");
        System.out.println("Jeśli chcesz wpłacić monety 2gr, to wpisz 14");
        System.out.println("Jeśli chcesz wpłacić monety 1gr, to wpisz 15");
 
        Scanner choice = new Scanner(System.in);
        int userInput = choice.nextInt();
 
        System.out.println("Ile monet/banknotów chcesz wpłacić?");
        Scanner quantity = new Scanner(System.in);
        int quant = quantity.nextInt();
 
        switch(userInput) {
            case 1:
                kasa.banknot50000 += quant;
                break;
 
            case 2:
                kasa.banknot20000 += quant;
                break;
 
            case 3:
                kasa.banknot10000 += quant;
                break;
 
            case 4:
                kasa.banknot5000 += quant;
                break;
 
            case 5:
                kasa.banknot2000 += quant;
                break;
 
            case 6:
                kasa.banknot1000 += quant;
                break;
 
            case 7:
                kasa.moneta500 += quant;
                break;
 
            case 8:
                kasa.moneta200 += quant;
                break;
 
            case 9:
                kasa.moneta100 += quant;
                break;
 
            case 10:
                kasa.moneta50 += quant;
                break;
 
            case 11:
                kasa.moneta20 += quant;
                break;
 
            case 12:
                kasa.moneta10 += quant;
                break;
 
            case 13:
                kasa.moneta5 += quant;
                break;
 
            case 14:
                kasa.moneta2 += quant;
                break;
 
            case 15:
                kasa.moneta1 += quant;
                break;
 
            default:
                System.out.println("Niepoprawna wartość");
        }
 
    }
 
    public static String sum(Kasa kasa) {
        double suma = ((kasa.banknot50000 * 50000) + (kasa.banknot10000 * 10000) + (kasa.banknot5000 * 5000) +
                (kasa.banknot2000 * 2000) + (kasa.banknot1000 * 1000) + (kasa.moneta500 * 500) + (kasa.moneta200 * 200)
                + (kasa.moneta100 * 100) + (kasa.moneta50 * 50) + (kasa.moneta20 * 20) + (kasa.moneta10 * 10) + (kasa.moneta5 * 5)
                + (kasa.moneta2 * 2) + (kasa.moneta1))/100;
        return "W kasie znajduje się: " + suma + "zł";
    }
 
    public static void withdraw(Kasa kasa) {
        System.out.println("Ile chcesz wypłacić?");
        Scanner howMuch = new Scanner(System.in);
        double sum = howMuch.nextDouble();
 
        sum *= 100;
 
        while(sum > 0) {
            if(sum >= 50000) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 50000)) / 50000) + " banknot/ów 500zł");
                kasa.banknot50000 -= (int)((sum - (sum % 50000)) / 50000);
                sum -= (sum - (sum % 50000));
            }
 
            else if(sum >= 20000) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 20000)) / 20000) + " banknot/ów 200zł");
                kasa.banknot20000 -= (int)((sum - (sum % 20000)) / 20000);
                sum -= (sum - (sum % 20000));
            }
 
            else if(sum >= 10000) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 10000)) / 10000) + " banknot/ów 100zł");
                kasa.banknot10000 -= (int)((sum - (sum % 10000)) / 10000);
                sum -= (sum - (sum % 10000));
            }
 
            else if(sum >= 5000) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 5000)) / 5000) + " banknot/ów 50zł");
                kasa.banknot5000 -= (int)((sum - (sum % 5000)) / 5000);
                sum -= (sum - (sum % 5000));
            }
 
            else if(sum >= 2000) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 2000)) / 2000) + " banknot/ów 20zł");
                kasa.banknot2000 -= (int)((sum - (sum % 2000)) / 2000);
                sum -= (sum - (sum % 2000));
            }
 
            else if(sum >= 1000) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 1000)) / 1000) + " banknot/ów 10zł");
                kasa.banknot1000 -= (int)((sum - (sum % 1000)) / 1000);
                sum -= (sum - (sum % 1000));
            }
 
            else if(sum >= 500) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 500)) / 500) + " monetę/monet 5zł");
                kasa.moneta500 -= (int)((sum - (sum % 500)) / 500);
                sum -= (sum - (sum % 500));
            }
 
            else if(sum >= 200) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 200)) / 200) + " monetę/monet 2zł");
                kasa.moneta200 -= (int)((sum - (sum % 200)) / 200);
                sum -= (sum - (sum % 200));
            }
 
            else if(sum >= 100) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 100)) / 100) + " monetę/monet 1zł");
                kasa.moneta100 -= (int)((sum - (sum % 100)) / 100);
                sum -= (sum - (sum % 100));
            }
 
            else if(sum >= 50) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 50)) / 50) + " monetę/monet 50gr");
                kasa.moneta50 -= (int)((sum - (sum % 50)) / 50);
                sum -= (sum - (sum % 50));
            }
 
            else if(sum >= 20) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 20)) / 20) + " monetę/monet 20gr");
                kasa.moneta20 -= (int)((sum - (sum % 20)) / 20);
                sum -= (sum - (sum % 20));
            }
 
            else if(sum >= 10) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 10)) / 10) + " monetę/monet 10gr");
                kasa.moneta10 -= (int)((sum - (sum % 10)) / 10);
                sum -= (sum - (sum % 10));
            }
 
            else if(sum >= 5) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 5)) / 5) + " monetę/monet 5gr");
                kasa.moneta5 -= (int)((sum - (sum % 5)) / 5);
                sum -= (sum - (sum % 5));
            }
 
            else if(sum >= 2) {
                System.out.println("Wypłacono " + (int)((sum - (sum % 2)) / 2) + " monetę/monet 2gr");
                kasa.moneta2 -= (int)((sum - (sum % 2)) / 2);
                sum -= (sum - (sum % 2));
            }
 
            else if(sum >= 1) {
                System.out.println("Wypłacono " + sum + " monetę/monet 1gr");
                kasa.moneta1 -= sum;
                sum = 0;
            }
        }
 
    }
 
}
 
class Kasa {
    double banknot50000 = 0;
    double banknot20000 = 0;
    double banknot10000 = 0;
    double banknot5000 = 0;
    double banknot2000 = 0;
    double banknot1000 = 0;
    double moneta500 = 0;
    double moneta200 = 0;
    double moneta100 = 0;
    double moneta50 = 0;
    double moneta20 = 0;
    double moneta10 = 0;
    double moneta5 = 0;
    double moneta2 = 0;
    double moneta1 = 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 26 maja 2018 przez mbabane Szeryf (79,280 p.)

Czytaj co jest napisane 

Resource leak: 'choice' is never closed

Czepia się, że nigdzie nie zamykasz tych Scannerów - albo używaj try-with-resource albo powstawiaj zamknięcia ręcznie: scanner.close().

komentarz 26 maja 2018 przez james30k Bywalec (2,260 p.)
Ale podpowiedziałbyś w którym miejscu muszą być te scanner.close() ponieważ, gdy wstawiam to jest napisane, że tu nie może być.
komentarz 26 maja 2018 przez mbabane Szeryf (79,280 p.)
Wtedy kiedy dany scanner jest już niepotrzebny.

Podobne pytania

0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 2 listopada 2022 w Java przez Digi26 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 291 wizyt
0 głosów
3 odpowiedzi 206 wizyt
pytanie zadane 2 grudnia 2020 w Java przez nexyz Nowicjusz (210 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...