Książki na półkach - w jaki sposób wykonać to zadanie?

0

Mamy n książek i wstawiamy je na półki. Każda półka może pomieścić k książek.
Ile półek będzie zajęte przez książki i ile książek znajdzie się na ostatniej użytej pólce?

Stworzyć klasę BooksOnShelves w taki sposób, aby następujący fragment programu, zapisany w metodzie main klasy Main:

int numOfBooks // = liczba książek do wstawienia na półki
int shelfCap   // = pojemnoość jednej pólki 
BooksOnShelves b = new BooksOnShelves(numOfBooks, shelfCap);
System.out.println("Liczba pólek: " + b.getNumOfShelves());
System.out.println("Liczba ksiazek na ostatniej pólce: " + b.getBooksOnLastShelf());

wyprowadził prawidłowa informację.

Uwaga: należy zapewnić, by metody getNumOfShelves() oraz getBooksOnLastSelf() z klasy BookOnShelves zwracały prawidłowe (calkowite) wyniki dla dowolnej calkowitej (typu int) liczby książek i dowolnej (typu int) pojemności półek. Nazwa klasy i nazwy metod są obowiązkowe. Fragmentów zaznaczonych na czerwono nie wolno zmieniac.


Jestem totalnym początkującym w dziedzinie programowania, dlatego proszę o wyrozumiałość.

W jaki sposób mogę wykonać to zadanie? Próbowałem zrobić to tak, ale pojawia się błąd:

"Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The constructor BooksOnShelves(int, int) is undefined
at BooksOnShelves.main(BooksOnShelves.java:13)"

import java.util.Scanner;
public class BooksOnShelves {

  	int numOfBooks;
	int shelfCap;

public static void main(String[] args) {

Scanner wczytanie = new Scanner(System.in);
int numOfBooks = wczytanie.nextInt();
int shelfCap = wczytanie.nextInt();

    BooksOnShelves b = new BooksOnShelves(numOfBooks, shelfCap);    
    System.out.println("Liczba pólek: " + b.getNumOfShelves());
    System.out.println("Liczba ksiazek na ostatniej pólce: " + b.getBooksOnLastShelf());

}

public BooksOnShelves() {

}

public double getNumOfShelves() {

if(numOfBooks%shelfCap==0) 
{
return numOfBooks/shelfCap;
}
else 
{
return (int)(numOfBooks/shelfCap)+1;
}

}


public double getBooksOnLastShelf() {

if(numOfBooks%shelfCap==0)
{
return (numOfBooks/shelfCap);
}
else
{
return (numOfBooks%shelfCap);	
}
}

}

dodanie znaczników <code class="java"> - fp

1

Klasa, w której jest funkcja main() powinna nazywać się inaczej (czyli tak jak nazwiesz swój program). Wtedy tworzysz osobną klase BookOnShelves i tam umieszczasz wymagane metody i zmienne.

0
import java.util.Scanner;
public class NazwaProgramu {
 
          int numOfBooks;
        int shelfCap;
 
public static void main(String[] args) {

BooksOnShelves(); { ... metody, zmienne itd ?

dodanie znacznika <code class="java"> - fp

0

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The constructor NazwaProgramu.BooksOnShelves(int, int) is undefined

at NazwaProgramu.main(NazwaProgramu.java:13)
import java.util.Scanner;
public class NazwaProgramu {
 
          int numOfBooks;
        int shelfCap;
 
public static void main(String[] args) {
 
Scanner wczytanie = new Scanner(System.in);
int numOfBooks = wczytanie.nextInt();
int shelfCap = wczytanie.nextInt();
 
    BooksOnShelves b = new BooksOnShelves(numOfBooks, shelfCap);    
    System.out.println("Liczba pólek: " + b.getNumOfShelves());
    System.out.println("Liczba ksiazek na ostatniej pólce: " + b.getBooksOnLastShelf());
 
}
 
public class BooksOnShelves {
 public BookOnShelves(int numOfBooks, int shelfCap) {
		 
 }
 
 public double getNumOfShelves() {
	 
	 if(numOfBooks%shelfCap==0) 
	 {
	 return numOfBooks/shelfCap;
	 }
	 else 
	 {
	 return (int)(numOfBooks/shelfCap)+1;
	 }
	  
	 }
	  
	  
	 public double getBooksOnLastShelf() {
	  
	 if(numOfBooks%shelfCap==0)
	 {
	 return (numOfBooks/shelfCap);
	 }
	 else
	 {
	 return (numOfBooks%shelfCap);        
	 }
 
}
}
}
}

dodanie znacznika <code class="java"> - fp

1
import java.util.*;

class BooksOnShelves
{
    // konstruktor, metody, zmienne
}

public class NazwaProgramu
{
    public static void main(String[] args)
    {
        Scanner wczytanie = new Scanner(System.in);
        int numOfBooks = wczytanie.nextInt();
        int shelfCap = wczytanie.nextInt();
         
        BooksOnShelves b = new BooksOnShelves(numOfBooks, shelfCap);    
        System.out.println("Liczba pólek: " + b.getNumOfShelves());
        System.out.println("Liczba ksiazek na ostatniej pólce: " + b.getBooksOnLastShelf());
    }
}

Teraz pozostaje ci, aby stworzyć konstruktor, metody oraz zmienne (wszystko w klasie BooksOnShelves).

0

Udało się! Program wreszcie zadziałał. Bardzo dziękuję Wam za pomoc. Wklejam działającą wersję dla potomnych :)

import java.util.*;

public class NazwaProgramu
{
    public static void main(String[] args)
    {
        Scanner wczytanie = new Scanner(System.in);
        System.out.println("\nPodaj liczbe ksiazek, ktore chcesz umiescic na polkach: ");
        int numOfBooks = wczytanie.nextInt();
        System.out.println("\nPodaj liczbe ksiazek, ktore mieszcza sie na jednej polce: ");
        int shelfCap = wczytanie.nextInt();
        
 
        BooksOnShelves b = new BooksOnShelves(numOfBooks, shelfCap);    
        System.out.println("Liczba polek: " + b.getNumOfShelves());
        System.out.println("Liczba ksiazek na ostatniej polce: " + b.getBooksOnLastShelf());
    }
}
 
class BooksOnShelves
{
	private int numOfBooks;
	private int shelfCap;
	
    public BooksOnShelves(int x, int y) {
   
    	numOfBooks = x;
    	shelfCap = y;
    
    }
    
    public double getNumOfShelves() {
    	 
        if(numOfBooks%shelfCap==0) 
        {
        return numOfBooks/shelfCap;
        }
        else 
        {
        return (int)(numOfBooks/shelfCap)+1;
        }

        }


        public double getBooksOnLastShelf() {

        if(numOfBooks%shelfCap==0)
        {
        return shelfCap;
        }
        else
        {
        return (numOfBooks%shelfCap);        
        }
}
 

}
0

A czemu nie tak:

import java.util.*;
 
public class NazwaProgramu
{
    public static void main(String[] args)
    {
        Scanner wczytanie = new Scanner(System.in);
        System.out.println("\nPodaj liczbe ksiazek, ktore chcesz umiescic na polkach: ");
        int numOfBooks=wczytanie.nextInt();
        System.out.println("\nPodaj liczbe ksiazek, ktore mieszcza sie na jednej polce: ");
        int shelfCap=wczytanie.nextInt();
  
        System.out.println("Liczba polek: "+((numOfBooks+shelfCap-1)/shelfCap));
        System.out.println("Liczba ksiazek na ostatniej polce: "+(numOfBooks-shelfCap*((numOfBooks+shelfCap-1)/shelfCap-1)));
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1