Newsgroup: it.comp.java
Titolo: Dove si trova il problema ?

Ringrazio già da ora chi mi risponde.
Sto cercando in tutti i modi di studiare Java per darmi la materia ma è
difficile.
Mi dite dove sbaglio nel seguete codice commentato:
(Il commento indica il problema da svolgere)
import javax.swing.*;
public class Es01{
  public static void main (String [] args){
    /*Sia n una variabile contenente un numero intero, e sia pari una
variabile booelana che vale true
    se n è pari e false altrimenti.
    Scrivere il codice che visualizzi una 'A' se n<2, una 'B' se 2<=n<=100
con n pari, una 'C' se 2<=n<=100
    con n dispari, ed una 'D' altrimenti*/
    int n;
    boolean pari;
    n = Integer.parseInt(JOptionPane.showInputDialog("Inserisci un
valore:"));
    if (n % 2 == 0){
      pari = true;
      else
      pari = false;
    }
    if (n<2){
      System.out.println("'A'");
    }
    if (n & 2 == 0){
      if (2<=n && n<= 100){
        System.out.println("'B'");
      }
      else
      if (2<=n && n<=100){
        System.out.println("'C'");
    else
      System.out.println("'D'");
  }
}
}
}
Chi mi può aiutare correngendo il testo ricordo che attualmente abbiamo
usato come funzioni, cicli etc... solo:
While, Do While, If, Switch e STOP.
per favore aiutatemi e datemi qualche dritta.

 Mi dite dove sbaglio nel seguete codice commentato:
fai un po' troppi controlli, alcuni dei quali nn sono espressioni, e 
metti male le parentesi graffe degli if
senza averlo provato, io correggerei cosě
      if (n % 2 == 0)
        pari = true;
      else
        pari = false;
  oppure
	pari = (n % 2 == 0) ? true : false;
  oppure
	boolean pari = false;
	if (n % 2 == 0) pari = true;
  poi
      if (n < 2) { System.out.println("'A'"); }
      else {
      	if (n <= 100){
		if (pari) { System.out.println("B"); }
		else	  { System.out.println("C"); }
         }
         else { System.out.println("'D'"); }
      }
ricordati che if ed else sono istruzioni allo stesso livello (else non 
va dentro un blocco if) e che se c'č una sola istruzione nel blocco puoi 
togliere le graffe (come nelle prime 4 righe). se perň hai degli if 
annidati, ti conviene mettere sempre le graffe per chiarezza anche se 
hai una sola istruzione nel blocco.
spero di aver capito bene e di esserti stato d'aiuto
ciao
--
-ale-

Ho rivistato un po' tutto il problema facendo conto anche dei commenti.
Sinceramente non ho ben capito la stampa di "D" a quali parametri deve far
riferimento.
Ho ipotizzato fosse quando 'n' raggiunga un valore oltre il 100 (Iva
Zanicchi forever! :-D)
Questo è il codice delle condizioni:
if (n % 2 == 0)
      pari = true;
      else
      pari = false;
    //Controllo del valore di n se inferiore a 2
    if (n<2)
      System.out.println("'A'");
    if (pari == true){
       if (2<=n && n<= 100)
         System.out.println("'B'");
        else {
         if (n>100)
          System.out.println("'D'");
        }
    }
    else {
      if (2<=n && n<= 100)
         System.out.println("'C'");
       else {
       if (n>100)
        System.out.println("'D'");
     }
 }
Spero di esserti stato di aiuto :)
Ciao ciao
G.

A parte i consigli d'oro di gorilla,
usa per ora sempre le graffe con gli if, cosi non sbagli.
es: if { } else if { } else { }
Se usi dei tool tipo jedit o eclipse, ti aiutano molto.
Inoltre nelle prime righe di un programma java dove metti il main devi 
usare o:
public static void main(String[] args)
oppure:
public static void main(String args[])
Ti spiego: stai dicendo al JVM che deve iniziare a eseguire da lì, ma in 
realtà stai solo scrivendo un metodo pubblico(public), statico(static) 
cioè che non deve essere istanziato per usarlo, void(senza ritorno) cioè 
  non dovrai mettere il return per intenderci, main(per far capire a JVM 
di inziare da là) e guarda caso gli stai passando un array di 
stringhe(args[0], args[1] ecc), che potrai scrivere in quei due modi.
MAgari ste cose le sapevi o l'NG mi fa brutto per la banalità..
Ma ora devi spiegarmi tu una cosa: cos'è il cotrutto STOP?
Ciao,
cnt00