Wątek przeniesiony 2014-12-09 12:07 z Java przez bogdans.

Wczytanie danych do klas z klawiatury

0

Witam, zrobiłam program z klasami kolo i prostokat, które liczą obwód i pole.
Zrobiłam również klase main, która wyświetla wyniki.
Potrzebuje zrobić coś takiego, że gdy się włączy program to wybieram czy koło czy prostokąt a gdy już wybiorę to wpisuje dane z klawiatury w moim przypadku boki lub promień, kolor i wypełnienie "true" " false". Czytałam coś o tym Scanner ale nie potrafię tego wrzucić do tego.
A oto kod:
Main.java

public class Main {

	public static void main(String[] args) {
		Kolo kolo = new Kolo(2, "Żółty", true);
		Prostokat prostokat = new Prostokat(2,3, "Zielony", false);
		
		System.out.println(prostokat);
		System.out.println(kolo);

	}

}

Prostokat.java

public class Prostokat extends Figura
{
	private double bokA;
	private double bokB;
	
	public Prostokat()
	{
		this(1.0,1.0);
	}
	public Prostokat(double a, double b)
	{
		this(a,b, "Fioletowy", false);
	}
	
	public Prostokat(double a, double b, String k, boolean w)
	{
		super (k, w);
		bokA = a;
		bokB = b;
	}
	
	public double obliczPole()
	{
		return bokA * bokB;
	}
	
	public double obliczObwod()
	{
		return 2*(bokA + bokB);
	}
	
	public String toString()
	{
		return "Figura: " + getClass().getName() + ", Bok a: " + bokA + ", Bok b: " + bokB + ", Obwód: " + obliczObwod() + ", Pole: " + obliczPole() + ", " + super.toString();
	}

}

Kolo.java

public class Kolo extends Figura
{
	private double promien;
	
	public Kolo()
	{
		this (1.0);
	}
	
	public Kolo(double r)
	{
		this(r, "Granatowy", true);
	}
	
	public Kolo (double r, String k, boolean w)
	{
		super (k, w);
		promien = r;
	}
	
	public double obliczObwod()
	{
		return 2*Math.PI*promien;
	}
	
	public double obliczPole()
	{
		return Math.PI*promien*promien;
	}
	
	public String toString()
	{
		return "Figura: " + getClass().getName() + ", Promień: " + promien + ", Obwód: "+obliczObwod() + "Pole: " + obliczPole() + ", " + super.toString();
	}


}
0

Przykład użycia klasy Scanner

import java.util.*;

public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Wybierz: k - koło, p - prostokąt, inna litera - koniec ");
        String choice = sc.next().toLowerCase();
        switch(choice)
        {
            case "k":
                Kolo kolo = new Kolo(2, "Żółty", true);
                System.out.println(kolo);
                break;   
            case "p":
                Prostokat prostokat = new Prostokat(2,3, "Zielony", false);
                System.out.println(prostokat);
                break;
            default:                 
        } 
    }
}
0

Hej bardziej chodzi mi o to żeby do tego wpisać parametry do koła: Promien, a do prostokata dwa boki w tej klasie main zeby nie byly z góry ustalone :)

0

Bez kontroli poprawności i tylko jeden bok. Z resztą sobie poradzisz.

import java.util.*;

public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Wybierz: k - koło, p - prostokąt, inna litera - koniec ");
        String choice = sc.next().toLowerCase();
        switch(choice)
        {
            case "k":
                Kolo kolo = new Kolo(2, "Żółty", true);
                System.out.println(kolo);
                break;   
            case "p":
                System.out.print("Dlugość pierwszego boku (np 23,78): ");
                double a = sc.nextDouble();
                Prostokat prostokat = new Prostokat(a,3, "Zielony", false);
                System.out.println(prostokat);
                break;
            default:                 
        } 
    }
}
0

Teraz już tak dzięki jakbym sobie nie poradziłą to będę pisałą :)

Zrobiłam wszystko i ładnie działa tylko mam jeszcze jeden mały błąd a mianowicie: Resource leak: 'sc' is never closed
a oto kod:

import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Wybierz: k - koło, p - prostokąt, inna litera - koniec ");
        String choice = sc.next().toLowerCase();

        switch(choice)
        {
            case "k":
            	System.out.print("Długość promienia (np 23,78): ");
                double r = sc.nextDouble();
                Kolo kolo = new Kolo(r, "Żółty", true);
                System.out.println(kolo);
                break;   
            case "p":
                System.out.print("Dlugość pierwszego boku (np 23,78): ");
                double a = sc.nextDouble();
                System.out.print("Dlugość drugiego boku (np 23,78): ");
                double b = sc.nextDouble();
                Prostokat prostokat = new Prostokat(a,b, "Zielony", false);
                System.out.println(prostokat);
                break;
            default:                 
        } 
        
    }
}

W którym miejscu i jak zamknąć ?

0

Najlepiej na koncu, jak juz nie bedziesz uzywac ;) Proponowalbym po switchu:

sc.Close();

Expertem od javy nie jestem, ale mozna chyba bezpieczniej zrobic tak:

    public static void main(String[] args) 
	{
        try(Scanner sc = new Scanner(System.in))
		{
			System.out.print("Wybierz: k - koło, p - prostokąt, inna litera - koniec ");
			String choice = sc.next().toLowerCase();
	 
			switch(choice)
			{
				case "k":
					System.out.print("Długość promienia (np 23,78): ");
					double r = sc.nextDouble();
					Kolo kolo = new Kolo(r, "Żółty", true);
					System.out.println(kolo);
					break;   
				case "p":
					System.out.print("Dlugość pierwszego boku (np 23,78): ");
					double a = sc.nextDouble();
					System.out.print("Dlugość drugiego boku (np 23,78): ");
					double b = sc.nextDouble();
					Prostokat prostokat = new Prostokat(a,b, "Zielony", false);
					System.out.println(prostokat);
					break;
				default:                 
			}
		}
    }

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