Onko tämä hyvä?
package javafx_drop_anagrammi; import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.input.*; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.text.Text; import javafx.stage.Stage; public class JavaFX_Drop_Anagrammi extends Application { String ent = ""; @Override public void start(Stage stage){ stage.setTitle("Ohjelma"); Group root = new Group(); Scene scene = new Scene(root,400,400); //Luodaan objektit. final TextField lahde = new TextField("2"); final Text kohde = new Text(100,100,"0"); //Lisätään objektiti. root.getChildren().add(lahde); root.getChildren().add(kohde); //Otetaan tieto lahde.setOnDragDetected(new EventHandler<MouseEvent>() { public void handle(MouseEvent event){ Dragboard db = lahde.startDragAndDrop(TransferMode.ANY); ClipboardContent sisalto = new ClipboardContent(); sisalto.putString(lahde.getText()); db.setContent(sisalto); event.consume(); } }); kohde.setOnDragOver(new EventHandler<DragEvent>(){ public void handle(DragEvent event){ if (event.getGestureSource() != kohde && event.getDragboard().hasString()){ event.acceptTransferModes(TransferMode.COPY_OR_MOVE); } } }); kohde.setOnDragEntered(new EventHandler<DragEvent>() { public void handle(DragEvent event){ if (event.getGestureSource() != kohde && event.getDragboard().hasString()){ System.out.println(""); } } }); kohde.setOnDragExited(new EventHandler<DragEvent>() { public void handle(DragEvent event){ event.consume(); } }); kohde.setOnDragDropped(new EventHandler<DragEvent>() { public void handle(DragEvent event){ Dragboard db = event.getDragboard(); boolean onnistui = false; if (db.hasString()){ //Katsotaan, onko anagrammi. //Anagrammien pitää olla saman pituiset ja niissä kaikkien merkkien määrä täytyy olla sama. String nyk = db.getString(); int yksi = 0; int kaksi = 0; boolean anagrammi = true; for (Character x : ent.toCharArray()){ yksi = 0; kaksi = 0; for (Character y : ent.toCharArray()){ if (x == y){ yksi++; } } for (Character y : nyk.toCharArray()){ if (x == y){ kaksi++; } } if (yksi != kaksi){ anagrammi = false; } } //Näytetään tulos. if (anagrammi == true && ent.length() == nyk.length()){ kohde.setText("Anagrammi"); } else { kohde.setText("Ei ole anagrammi"); } ent = nyk; } event.setDropCompleted(onnistui); event.consume(); } }); lahde.setOnDragDone(new EventHandler<DragEvent>() { public void handle(DragEvent event){ if (event.getTransferMode() == TransferMode.MOVE){ lahde.setText("1"); } event.consume(); } }); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }
Miksi kyselet täällä että onko tämä koodi hyvä tai onko tämä koodi hyvä? Tietääkseni Ohjelmointiputkassa kuuluu kysyä ohjelmoinnista tai muusta asiasta, ei siitä että onko minun koodini hyvä. kysyit samaa tässä.
JRokka kirjoitti:
Onko tämä hyvä?
No ei... Yksinkertaisin tapa tarkastaa anagrammit on järjestää sanojen kirjaimet aakkosjärjestykseen ja verrata sitten sanoja keskenään. Nopeampiakin tapoja tähän tosin löytyy.
Voit myös itse kokeilla oman toteutuksesi tehokkuutta kirjoittamalla ohjelman, mikä lukee jostain isohkosta sanakirjasta sanat ja muodostaa niistä kaikki anagrammit ja tulostaa listan niistä. Esimerkiksi "british-english-insane" sanakirja tiedosto toimii tähän hyvin ja kohtuullisen tehokas Java toteutus suoriutuu tehtävästä varmaankin noin 10 sekunnissa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.