Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj. Mám otázku, jak si můžu definovat PI v public static void? jakože dám hodnotu PI, a pak v příkladě napíšu místo hodnoty PI už nadefinovanou PI
něco jak v sekci var pi=3,14, a v příkladě pak napíšu jen pi, a onoto už bude brát tu hodnotu ze sekce var.
Děkuji všem za pomoc(v jave jsem začátečník )
Offline
Zdravím,
dá se to provést třeba takto:
1)
class Konstanta {
public static final double PI = 3.141592653589793;
}
class Test {
public static void main(String[] args) {
System.out.println("Hodnota Ludolfova čísla je = " + Konstanta.PI);
}
}A teď si trošku vysvětlíme některá klíčová slova:
public: Veřejná složka, znamená to, že je viditelná všude.
final: Pokud známe klíčové slovo const třeba v C++, můžeme ho analogicky vnímat jako static final v Javě. Ale není to úplná analogie.
Takže platí tak nějak obecně, že
C++ = const,
Java = static final.
Nebo si to můžeme definovat i ve vlastní třídě (tam dáme klíčové slovo private):
2)
class Test
{
private static final double PI = 3.141592653589793;
public static void main(String[] args) {
System.out.println("Hodnota Ludolfova čísla je = " + PI);
}
}Jenom ještě připomenu, že napsání velkého PI možná nepůjde přeložit, pokud si vložíme do projektu knihovnu java.lang.Math.
Pokud vložíme do našeho projektu knihovnu java.lang.Math, můžeme samozřejmě Ludolfovo číslo používat v našem programu staticky a to jako Math.PI.
Konstanta Math.PI funguje a je implementována úplně stejně, jako v naší první ukázce.
Uvedeme si opět malý příklad s knihovnou:
3)
import java.lang.Math
class Test
{
private static final long double PI = 3.141592653589793;
public static void main(String[] args) {
System.out.println("Hodnota Ludolfova čísla je = " + Math.PI);
}
}---
OUT TOPIC:
Ještě bych rád uvedl a připomenul příklady konstant v jiných programovacích jazycích. Někdy jsou problémy v C/C++.
Pro C obecně platí:
4)
#include <stdio.h> #define PI 3.1415926536
Pro C++ obecně platí:
5)
static const double PI = 3.1415926536;
Existuje i homogenní konstrukce:
6)
enum { PI = 3.1415926536; };---
Jinak je to dosti zavádějící, konstrukce static const se dá použít u C i C++. Kdy co použít, tak o tom sem našel dobrá slova dobrého Unix C programátora (v angličtině):
It depends on what you need the value for. You (and everyone else so far) omitted the third alternative:
static const int var = 5;
#define var 5
enum { var = 5 };Ignoring issues about the choice of name, then:
If you need to pass a pointer around, you must use (1).
Since (2) is apparently an option, you don't need to pass pointers around.
Both (1) and (3) have a symbol in the debugger's symbol table - that makes debugging easier. It is more likely that (2) will not have a symbol, leaving you wondering what it is.
(1) cannot be used as a dimension for arrays at global scope; both (2) and (3) can.
(1) cannot be used as a dimension for static arrays at function scope; both (2) and (3) can.
Under C99, all of these can be used for local arrays. Technically, using (1) would imply the use of a VLA (variable-length array), though the dimension referenced by 'var' would of course be fixed at size 5.
(1) cannot be used in places like switch statements; both (2) and (3) can.
(2) can change code that you didn't want changed because it is used by the preprocessor; both (1) and (3) will not have unexpected side-effects like that.
You can detect whether (2) has been set in the preprocessor; neither (1) nor (3) allows that.
So, in most contexts, prefer the 'enum' over the alternatives. Otherwise, the first and last bullet points are likely to be the controlling factors - and you have to think harder if you need to satisfy both at once.
If you were asking about C++, then you'd use option (1) - the static const - every time.
---
Snad vyčerpávající, RePRO.
Offline
Ahoj. Tak tvoje odpověď byla velmi vyčerpávající, ale i přesto netuším jak to aplikovat do mého zadání.
Abychom si více rozuměli, tak napíšu co mám a co z toho chci, a jak aplikovat to cos napsal.
Zadání
Zadejte obvod kruhu v cm. Vypočítejte průměr kruhu v mm
public class Cviceni {
public static void kruh( int obvod)
{
double prumer;
double prumerR;
prumer= obvod/(2*3.14);
prumerR=(prumer*2)*10;
System.out.println("Průměr kruhu : "+prumerR +" mm");
}
public static void main(String[] args) {
kruh(30);
}
A výsledek nevýjde přesně 30 ale s malou ochylkou(budu klidně rád, za jakékoliv úpravy kódu, zjednodušení apod.)
nicméně potřebuji to pí tedy nadefinovat, abych mohl počítat s Ludolfovým číslem.
Ale když to zkusím jak jsi psal, nefunguje, proto jak do toho co jsem napsal mám aplikovat to PI? nadefinovat číslo, a místo čísla pak napsat jen PI
Díky za tvou snahu;)
Offline

↑ xEro:
Proč nepoužiješ tu knihovnu o které psal asi tak uprostřed java.lang.Math
na začátek kodu (úplně nahoru před class) dáš
import java.lang.Math
v prumeru nahradic 3.14 za Math.PI
prumer= obvod/(2*Math.PI);
nadefinovat číslo, a místo čísla pak napsat jen PI
Tak se to většinou dělá někde si nadeklaruješ a nadefinuješ proměnnou a tu pak používáš, aby jsi její obsah nepsal pořád dokola, ale to vám snad museli říkat.
Offline
V jednom:
class Cviceni
{
private static final double PI = 3.141592;
public static void kruh(double obvod)
{
double prumer = obvod/(2*PI);
double prumerR = (prumer*2)*10;
System.out.println("Průměr kruhu: " + prumerR + " mm.");
}
public static void main(String[] args)
{
Cviceni.kruh(30);
}
}Nebo odděleně:
class Cviceni
{
private static final double PI = 3.141592;
public static void kruh(double obvod)
{
double prumer = obvod/(2*PI);
double prumerR = (prumer*2)*10;
System.out.println("Průměr kruhu: " + prumerR + " mm.");
}
}
class Test
{
public static void main(String[] args)
{
Cviceni.kruh(30);
}
}Píšu z hlavy, nemám tu překladač Javy. :-)
Offline