9
votes

Stockez les coordonnées X et Y

Bonjour IM NOUVEAU sur ce site et avez besoin d'aide pour un programme im travaille. Le problème est que je ne peux pas sembler stocker une chaîne et deux entiers (comme coordonnées). J'ai regardé un autre code mais je ne vois pas comment les valeurs sont stockées. Vous trouverez ci-dessous le code utilisé. Le code semble aller bien mais en essayant de stocker les valeurs que je ne peux pas mettre des entiers multiples. Merci pour votre temps xxx


3 commentaires

Pourquoi utilisez-vous un tel algorithme de code de hachage complexe? Pourquoi n'utilisez-vous pas simplement le bon vieux x + (un nombre premier) * y , par exemple. x + 31 * y ? Notez également que votre est égal à la mise en œuvre ne prend pas NULL des valeurs ou des jeux illégaux en compte.


@Mattiasbuelens Je pensais que ce casque n'était pas complexe, mais plutôt plus simple par rapport à la hachage de nombres premiers, correct? Il a également l'avantage de montrer clairement les coordonnées, séparées par un 0.


@ K_7 Peut-être que c'est moins complexe pour les humains de lire, mais c'est certainement plus complexe (comme dans: plus de travail) pour l'ordinateur. Pour le code critique de la performance, vous voulez hashcode pour faire le moins possible (tout en donnant toujours un hachage décent). La version ops fait la concaténation et le nombre de numéros de chaîne, alors que le numéro de numéro de choix n'est qu'un ajout entier et une multiplication entier.


5 Réponses :


9
votes

Il semble y avoir plusieurs problèmes:

  • "dan" est une chaîne code> code>, pas un caractère code> li>
  • cas est important dans Java ( Nouvelles coordonnées (65,72) CODE> devrait être Nouvelles coordonnées (65,72) CODE>) LI>
  • Les coordonnées doivent être statiques à être instanciées sans référence à une instance la classe de carte enfermante. Li> ul>

    Ceci devrait fonctionner: P>

    static class Coords {
        ...
    }
    
    Map<Coords, String> map = new HashMap<Coords, String>();
    map.put(new Coords(65, 72), "Dan");
    


2 commentaires

Aussi Coords est Classe intérieure SO SE Créer uniquement le moyen de créer une instance de cette classe se fait par exemple de classe extérieure. Pour supprimer ce problème, il peut être judicieux de la convertir dans classe imbriquée en ajoutant un modificateur statique ( des coords de classe statique {/*...*/} < / code>).


@Pshemo Absolument, je l'ai fait statique dans mon test mais j'ai oublié d'inclure cela dans ma réponse. Bien taché.



1
votes

Ajout à @assylias

  1. Vous fait Classe intérieure C afin d'insérer de nouveaux objets tels que vous avez ou neuf extérieur (). Nouveau intérieur () .
  2. Prenez soin de Convention de nommage Java

    comme: xxx


1 commentaires

Merci pour la réponse. il suffit de vous demander comment j'imprimerais les coordonnées comme quand j'essaye ça ne fonctionne pas encore



0
votes

Si vous avez un problème avec votre code, vous pouvez essayer ceci, code simple pour stocker la chaîne et deux int dans une carte xxx p> // classe principale commence xxx


0 commentaires

21
votes

Il y a une classe dans Java appelée point de classe.

http://docs.oracle.com/javase/7/docs/api/java/awt/point.html

Il s'agit des mêmes informations fournies sur Java Docs API 10 :

https: // docs .Oracle.com / Javase / 10 / Docs / API / Java / AWT / POINT.HTML

Un point représentant un emplacement dans (x, y) espace de coordonnée, spécifié en integer précision.

Vous pouvez voir un exemple, ainsi que d'autres sujets importants liés à ce lien: http://www.java2s.com/taturial/java/0261__2d-graphics/pointclass.htm xxx

J'espère que cela peut vous aider!


0 commentaires

1
votes
package Lecture3;

import java.util.Scanner;

public class lecture9 {

    private int nInleste;

    public lecture9() {/*
                         * tabell/ // T/*chapter 6 in the books.
                         **/
    }

    public static void main(String[] args) {
        Scanner inn = new Scanner(System.in);
        int nInleste = 3;
        double[] tall = new double[nInleste];
        double sum = 0;
        for (int i = 0; i < nInleste; i++) {
            System.out.println("Leste en tall!");
            tall[i] = inn.nextDouble();
            sum += tall[i];
        }
        System.out.println(sum);
        double snitt = nInleste / nInleste;
        System.out.println("Gjennomsnittsverdien:" + snitt);
        for (int i = 0; i < nInleste; i++) {
            double aavik = tall[i] - snitt;
            int avvivk = 0;
            System.out.println(i + 1 + " Tal sitt avvik fra gjennomsnittet " + avvivk);

        }
    }/* end of the main methods */

}

0 commentaires