18. december 2002 - 20:20Der er
10 kommentarer og 3 løsninger
Operator ! cannot be applied to int? heelp
Et program som skal sige om det er et skudår eller ej når man taster et årstal ind.... Men som jeg skrev i titel siger den at da er prob med ! hvorfor? hvad skal jeg gøre?
import javax.swing.JOptionPane;
class aar { public static void main (String args[] ) {
String brugerInput = JOptionPane.showInputDialog(null, "Indtast et årstal...");
Soreno!!! da du svarede rigtig og hurtigst vil jeg give dig pointene men det kan jeg ikke da du har lavet det i en kommentar det saakl jo være et svar.. med mindre du ikke vil have point...
!-operatoren er skruet sådan sammen, at den "binder stærkt" - dvs. virker på det der står umiddelbart til højre for det. Når du derfor skriver
!skud%100==0
forøsger den at negere enten skud eller skud%0 afhængig af om % binder svagere eller stærkere end !.
Det er som Arne antyder svært at huske hvad der binder hvor meget. Derfor bør du, som Arne siger, sætte tilstrøkkeligt mange paranteser, så du ikke er i tvivl.
På min ønskeseddel til julemanden i år står der at jeg gerne vil have en guldbroderet hovedpude med teksten "When in doubt, parenthesize" på den ene side, og "Er du i tvivl, så sæt paranteser" på den anden.
It is generally a good idea to use parentheses liberally in expressions involving mixed operators to avoid operator precedence problems. Even if the operator precedence seems clear to you, it might not be to others?you shouldn?t assume that other programmers know precedence as well as you do. if (a == b && c == d) // AVOID! if ((a == b) && (c == d)) // USE
Det eksempel, Arne, er så netop et af de steder hvor jeg ikke ville sætte paranteser, da "ingen" programmør vil være i tvivl. De præcedens-regler der virker der, stammer helt tilbage fra den første version af C. Men bliver kun forvirret hvis man fx er vant til at arbejde med fx Pascal, hvor lige netop sammenligning og konjunktion er byttet om i præcedens i forhold til C, C++, Java osv. Niklaus Wirth må have haft en dårlig dag, da han skrev syntaksbeskrivelsen for logiske udtryk i Pascal.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.