Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-03-2013, 22:59   #1
Dim11
Junior Member
 
L'Avatar di Dim11
 
Iscritto dal: Mar 2013
Messaggi: 18
[java]è efficente?(codice banale)

Ciao a tutti, ho da poco iniziato a studiare un po' Java dato che sono diplomato come perito informatico e sono a digiuno dalla programmazione da qualche anno..(secondo voi ne vale la pena per avere possibilità di lavoro?).
Ho due domande stupide su questo piccolo codice che ho fatto prima:

-come mai se ometto l'ELSE l'IF non funziona nel modo corretto? non dovrebbe essere facoltativo se è presente solo un'istruzione 'alternativa' all'if?
-a vederlo così il codice mi sembra ridondante e che si potrebbe scrivere in modi più efficenti..se si, come?
Tnx
Codice:
import javax.swing.*;
public class es8
{
  public static void main (String argv[])
  {
  	int n;
  	int j;
  	int m;
  	int k=Integer.parseInt(JOptionPane.showInputDialog(null,"inserisci un valore:"));

  	for(int i=k;i>=2;i--)
  	{
  	   System.out.print("\r"+i+" -> ");
  	   if(i%2==0)	
  	     n=i/2;
  	   else 
  	     n=((3*i)+1); 
  	   System.out.print("f("+i+")="+n);
	
  	   for(j=n;j>1;)
  	  {
  	     System.out.print(" -> ");
  	     if(j%2==0)	
  	       m=j/2;
  	     else  
  	       m=((3*j)+1); 
  	     System.out.print("f("+j+")="+m);
  	     j=m;
  	  }	
  	  j=n;	
  	}
  }
}
Dim11 è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2013, 18:32   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Io l'ho fatto così:
Codice:
import java.util.*;
import javax.swing.JOptionPane;

/**
 * Computing Collatz sequences 
 * see http://www.hwupgrade.it/forum/showthread.php?t=2554545
 *
 * CollatzComputer
 * - launcher. Accepts a "gui" arguments to launch the GUI version, otherwise
 * - the Consolle version is used.
 * 
 * CollatzGuiApp
 * - the GUI app. Use javax.swing.JOptionPane for input/output.
 * 
 * CollatzConsolleApp
 * - the consolle app. Use java.io.System for input/output.
 * 
 * CollatzSeq
 * - Istances of this class rappresent Collatz Sequences.
 * 
 */
public class CollatzComputer {
    
    public static void main(String[] args) {
        if (args.length > 0 && "gui".equalsIgnoreCase(args[0])) {
            CollatzGuiApp.run();
        } else {
            CollatzConsolleApp.run();
        }
    }
}


class CollatzGuiApp {

    static void run() {
        String inputMsg = "Please, insert an integer N bigger than zero.";
        String errorMsg = "Invalid input!";
        int n;
        
        while (true) {
            try {
                n = Integer.parseInt(JOptionPane.showInputDialog(null, inputMsg));
            } catch (NumberFormatException ex) {
                JOptionPane.showMessageDialog(null, errorMsg);
                continue;
            }
            if (n > 0) break;
        };
        
        StringBuilder buffer = new StringBuilder();
        for (int i=n; i>0; i--) {
            CollatzSeq sequence = CollatzSeq.forInteger(i);
            buffer.append(sequence).append("\n");
        }
        
        JOptionPane.showMessageDialog(null, buffer);
    }
    
}

class CollatzConsolleApp {

    static void run() {     
        System.out.println("CollatzConsolleApp > Welcome.");
        
        Scanner scanner = new Scanner(System.in);
        scanner.useDelimiter("\n");
        String inputMsg = "Please, insert an integer N bigger than zero.";
        String errorMsg = "Invalid input!";
        int n;
        
        while (true) {
            System.out.println(inputMsg);
            try {
                n = Integer.parseInt(scanner.next());
            } catch (NumberFormatException ex) {
                System.out.println(errorMsg);
                continue;
            }
            if (n > 0) break;
        };
        
        for (int i=n; i>0; i--) {
            CollatzSeq sequence = CollatzSeq.forInteger(i);
            System.out.println(sequence);
        }
        
        System.out.println("End.");
    }
    
}

/**
 * A Collatz sequence.
 */
final class CollatzSeq implements Iterable<Integer> {
    
    /**
     * Compute the Collatz sequence for the integer n
     * @param n the first integer in the Collatz sequence to compute
     * @return the Collatz sequence starting from n to 1 inclusive
     */
    static CollatzSeq forInteger(int n) {
        return new CollatzSeq(n);
    }
    
    // compute the Collatz sequence [n..1] - iterative method
    private static List<Integer> iterativeSequence(int n) {
        List<Integer> list = new ArrayList<>();
        
        while (n > 1) {
            list.add(n);
            if (n % 2 == 0) {
                n = n/2;
            } else {
                n = 3*n + 1;
            }
        }
        
        list.add(1);
        
        return list;
    }
    
    // compute the Collatz sequence [n..1] - trampoline
    private static List<Integer> recursiveSequence(int n) {
        List<Integer> list = new ArrayList<>();
        recursiveSequence0(n, list);
        return list;
    }
    
    // compute the Collatz sequence [n..1] - recursive method with accumulator
    private static void recursiveSequence0(int n, List<Integer> acc) {
        acc.add(n);
        
        if (n == 1) return;
        
        if (n % 2 == 0) {
            recursiveSequence0(n/2, acc);
        } else {
            recursiveSequence0(3*n+1, acc);
        }
    }
    
    // For testing purposes
    public static void main(String[] args) {
        CollatzSeq.test101(1);
        CollatzSeq.test101(4);
        CollatzSeq.test101(10);
        CollatzSeq.test101(79);
        CollatzSeq.test101(101);
    }
    
    private static void test101(int n) {
        CollatzSeq sequence = CollatzSeq.forInteger(n);
        System.out.println(sequence);
        System.out.println(sequence.count() + " elements");
        System.out.println("");
    }
    
    private final List<Integer> sequence;
    
    /**
     * Private 'ctor. 
     * Use static method CollatzSeq.forInteger to create instances.
     */
    private CollatzSeq(int n) {
        //List<Integer> list = recursiveSequence(n);
        List<Integer> list = iterativeSequence(n);
        sequence = Collections.unmodifiableList(list);
    }
    
    /**
     * @return the number of integers in this CollatzSeq
     */
    public int count() {
        return sequence.size();
    }
    
    @Override
    public String toString() {
        StringBuilder buffer = new StringBuilder().append("[");
        
        Iterator<Integer> it = sequence.iterator();
        while (it.hasNext()) {
            buffer.append(it.next());
            if (it.hasNext()) buffer.append(" -> ");
        }
        
        return buffer.append("]").toString();
    }
    
    @Override 
    public Iterator<Integer> iterator() {
        return sequence.iterator();
    }
}
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Da zero al tracciato in secondi: LibreCo...
Il regista Rian Johnson lancia a 12,99 d...
Microsoft stravolge l'app Sicurezza di W...
Mercato smartphone in caduta libera: -20...
Android 17 QPR3 Beta 3 riporta il blocco...
Le 10 offerte TOP in Amazon del weekend:...
Dyson, doppio crollo su Amazon: purifica...
Il 70% delle imprese non vede effetti de...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v