NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Řešené úlohy k 3.-5. lekci Javy

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Marek Šimon
Člen
Avatar
Marek Šimon:11.12.2015 23:19

Toto je kod stiahnuty z toho .zip co tu poslal David

import java.util.Scanner;

public class Kruh {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in, "Windows-1250");
        System.out.println("Zadej poloměr kruhu (cm): ");
        float r = Float.parseFloat(sc.nextLine());
        float o = 2 * 3.14F * r;
        float s = 3.14F * r * r;
        System.out.println("Obvod zadaného kruhu je: " + o + " cm");
        System.out.println("Jeho obsah je " + s + " cm^2");

A toto je moj kod. IDE mi hadze chybu pri deklarovani "o" a "s" a vyhadzuje mi chybu, ze pisem float a ocakava sa double. S double funguje bez problemov. Ale ked dam float, tak tam musim do hodnoty udat aj to (float).

import java.util.Scanner;

public class Cvicenie1 {

    public static void main(String[] args) {

        /* Aplikacia na vypocet obsahu a obvodu kruznice pri zadani jeho polomeru */

        Scanner sc = new Scanner(System.in, "Windows-1250");
        System.out.println("Zadaj polomer kruznice");
        float r = Float.parseFloat(sc.nextLine());
        float o = (float) Math.PI * r * 2;
        float s = (float) (Math.PI * r * r);

        System.out.println("Obvod kruznice je: " + o);
        System.out.println("Obsah kruznice je: " + s);

Neviete preco to tak je? Proste nevidim rozdiel a predsa to nefunguje.

 
Odpovědět
11.12.2015 23:19
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na Marek Šimon
tomisoka:11.12.2015 23:26

Math.PI je double, zatímco 3.14F je float. To je ten rozdíl.

 
Odpovědět
11.12.2015 23:26
Avatar
Martin Abdul
Člen
Avatar
Martin Abdul:7.1.2016 0:21

taky jde..

 
Odpovědět
7.1.2016 0:21
Avatar
skatech77
Člen
Avatar
skatech77:9.2.2016 19:37

Jak to vypada ? urcite by to slo zkratit :D

Odpovědět
9.2.2016 19:37
Valar Morghulis
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na skatech77
pocitac770:9.2.2016 22:21

2 připomínky:

  1. Když už jednou píšeš hodnotu Pi do proměnné (použiješ ji 2x, tak ok, dáš si ji někam stranou, to bych pochopil), tak proč ji jednou použiješ přes odkaz na proměnnou, a jindy zase použiješ rovnou hodnotu? Představ si, že by sis řekl, že to Pí chceš zpřesnit (třeba si vzpomeneš na 3,14159), a budeš ji muset přepisovat na dvou místech...
  2. Proč vytváříš zbytečně další proměnnou "r", když tam akorát překopíruješ hodnotu z "a"? Pokud jsi to myslel, aby jsi to mohl použít vícekrát ve výpočtu obsahu kruhu, tak ano, tohle jde napsat :D:
float obsah = a * a * pi;

Teď se tyhle "drobnosti" zdají zbytečné, vždyť je to jenom pár znaků navíc.... ale představ si, že bys měl projekt na 400 řádků, a použil by jsi tam ten poloměr/hodnotu Pí třeba 20x. Neber to jako hate, pouze jako tip na zlepšení do budoucna :)
A pokud by jsi chtěl maximální zkrácení, tak můžeš ten výpočet obvodu a obsahu psát už do výpisu do konzole ;)

Editováno 9.2.2016 22:21
 
Odpovědět
9.2.2016 22:21
Avatar
Jakub Pokorný:16.2.2016 0:31

Zdravim. . koukám že je tu mnoho vynalézavých lidí. Každopádně díky za tip. Všechny 3 zadání jsem nakonec dokončil - potřeboval jsem sice trochu času ale vyšlo to.

Díky

 
Odpovědět
16.2.2016 0:31
Avatar
Tomáš Malý:18.2.2016 20:17

Já raději používám double, je to přesnější a jednodušší na zápis.

import java.util.Scanner;

public class Kruh {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("Zadej poloměr kruhu: ");
        double polomer = Double.parseDouble(sc.nextLine());

        double obvod = 2 * Math.PI * polomer;
        double obsah = Math.PI * (Math.pow(polomer, 2));

        System.out.println("Obvod je: " + obvod);
        System.out.println("Obsah je: " + obsah);
 
Odpovědět
18.2.2016 20:17
Avatar
Xao Xixi
Člen
Avatar
Xao Xixi:8.3.2016 23:53

No koukám že tady to zkoušejí zjevně i pokročilý :-)
Mi začátečníci co jedou postupně to bez znalosti dalších možností napsali

System.out.println("zadej polomer kruhu v cm");
       float r = Float.parseFloat(sc.nextLine());
       float obvod = 2 * 3.14F * r;
       float obsah = 3.14F * r * r;
       System.out.println("obvod je " + obvod + "cm");
       System.out.println("obsah je " + obsah + "cm ctverecnich");

ale je dobré číst vaše komentáře, uvědomil jsem si jak to zkracovat, proč si definovat radši věci něž je v delších programech přepisovat na 20 místech - jen tak dál
Akorát budu hledat asi seznam příkazů co se dají použít - zatím mám začátečnický elán - už se tomu věnuju celých 5 hodin :-) :-)

 
Odpovědět
8.3.2016 23:53
Avatar
veselyjan96
Člen
Avatar
veselyjan96:11.3.2016 22:56

Můžu se zeptat v čem je výhoda parsování namísto napsání rovnou sc.nextFloat(); ? Díky za odpoved :)

 
Odpovědět
11.3.2016 22:56
Avatar
Michal Huff
Člen
Avatar
Odpovídá na pocitac770
Michal Huff:29.3.2016 16:45

pokud chceš hodnotu pí, můžeš použít Math.PI

 
Odpovědět
29.3.2016 16:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 385.