web-dev-qa-db-ja.com

X座標とY座標を保存します

こんにちは、このサイトは初めてです。作業中のプログラムについてサポートが必要です。私が抱えている問題は、文字列と2つの整数(座標として)を格納できないように見えることです。私は他のコードを見ましたが、値がどのように保存されているのかわかりません。以下は、iveが使用しているコードです。コードは問題ないようですが、値を格納しようとすると、乗算整数を入力できません。御時間ありがとうございます

import Java.util.HashMap;
public class map {

    class Coords {
        int x;
        int y;

        public boolean equals(Object o) {
            Coords c = (Coords) o;
            return c.x == x && c.y == y;
        }

        public Coords(int x, int y) {
            super();
            this.x = x;
            this.y = y;
        }

        public int hashCode() {
            return new Integer(x + "0" + y);
        }
    }

    public static void main(String args[]) {

        HashMap<Coords, Character> map = new HashMap<Coords, Character>();
        map.put(new coords(65, 72), "Dan");
    }

}
5
Djchunky123

いくつかの問題があるようです:

  • 「ダン」はStringであり、Characterではありません
  • 大文字と小文字は重要ですJava(new coords(65,72)new Coords(65,72)である必要があります)
  • マップクラスを囲むインスタンスへの参照なしでインスタンス化するには、座標が静的である必要があります。

これは機能するはずです:

static class Coords {
    ...
}

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

ps:class map内でローカル変数mapに名前を付けることは許可されていますが、そのような名前の衝突を行うことはお勧めできません。 Javaでは、クラスは通常大文字で始まるため、クラスの名前をMapに変更できます。しかし、MapがJavaの標準クラスであることが起こります。したがって、クラスをMainまたはTest、あるいは関連するものと呼んでください。 ;-)

8
assylias

JavaにはClassPointと呼ばれるクラスがあります。

http://docs.Oracle.com/javase/7/docs/api/Java/awt/Point.html

整数精度で指定された、(x、y)座標空間内の位置を表す点。

このリンクで例を見ることができます: http://www.Java2s.com/Tutorial/Java/0261__2D-Graphics/Pointclass.htm

import Java.awt.Point;

class PointSetter {

  public static void main(String[] arguments) {
    Point location = new Point(4, 13);

    System.out.println("Starting location:");
    System.out.println("X equals " + location.x);
    System.out.println("Y equals " + location.y);

    System.out.println("\nMoving to (7, 6)");
    location.x = 7;
    location.y = 6;

    System.out.println("\nEnding location:");
    System.out.println("X equals " + location.x);
    System.out.println("Y equals " + location.y);
  }
}

これがお役に立てば幸いです。

12
S. Mayol

@assyliasに追加

  1. あなたが持っているような新しいオブジェクトを挿入するためにあなたを_inner class_ staticにするか、new Outer().new Inner()
  2. 世話をする Java命名規則

次のようなコード:

_public class XYTest {
    static class Coords {
        int x;
        int y;

        public boolean equals(Object o) {
            Coords c = (Coords) o;
            return c.x == x && c.y == y;
        }

        public Coords(int x, int y) {
            super();
            this.x = x;
            this.y = y;
        }

        public int hashCode() {
            return new Integer(x + "0" + y);
        }
    }

    public static void main(String args[]) {

        HashMap<Coords, String> map = new HashMap<Coords, String>();

        map.put(new Coords(65, 72), "Dan");

        map.put(new Coords(68, 78), "Amn");
        map.put(new Coords(675, 89), "Ann");

        System.out.println(map.size());
    }
}
_
1
amicngh
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 */

}
1
Candida Sylta

コードに問題がある場合は、この単純なコードを試して、文字列と2つのint値をmapに格納できます。

class MyCoord{
    private int X;
    private int Y;

    public MyCoord() {
        this(0,0);
    }        
    public MyCoord(int X, int Y) {
        this.X = X;
        this.Y = Y;
    }
    public int getX() {
        return X;
    }
    public int getY() {
        return Y;
    }
    public void setX(int X) {
        this.X = X;
    }
    public void setY(int Y) {
        this.Y = Y;
    }
}

//メインクラスが始まります

public class  PointDemo{
    public static void main(String[] args) {

        Map <String,MyCoord> multiplePoints=new HashMap<String, MyCoord>();
        multiplePoints.put("point1", new MyCoord(10, 20));
        multiplePoints.put("point2", new MyCoord(100, 2000));

        MyCoord coord=multiplePoints.get("point1");
        System.out.println(coord.getX() +" : "+coord.getY());              
    }
}
0
satvinder singh