【问题标题】:How to scan points in Java [duplicate]如何在Java中扫描点[重复]
【发布时间】:2015-04-16 16:16:31
【问题描述】:

在java中扫描一个点的可能方法是什么?我应该先读 point.x 然后再读 point.y 还是可以同时读这两个坐标?

import java.awt.Point;
import java.util.Scanner;
public class Saleelo {
    public static void main(String[] args) {
        int n = 5;
        Scanner scan = new Scanner(System.in);
        Point[] Points = new Point[60];
        for (int i=0 ; i < n ; i++) {
            Points[i].x = scan.nextInt();
            Points[i].y = scan.nextInt();
            System.out.println(Points[i]);
        }   
    }
}

这是我尝试过的,它给了我null pointer exception

【问题讨论】:

  • 您希望用户如何输入积分?从定义上讲,这确实回答了您的第一个问题。您获得 NPE 的原因是新的永远不会创建 Point - Points[i] = new Point();并且数组被初始化为null。此外,请遵守 Java 命名约定,变量应位于 camelCase
  • 不足为奇。你没有在Points 中初始化任何东西,所以Points[i].x 可能会抛出你的空指针。

标签: java point


【解决方案1】:

在尝试为其元素赋值之前实例化每个数组元素

for (int i=0 ; i < points.length ; i++) {
    points[i] = new Point();
    ...

points 数组仅使用您将使用的 5 个元素进行初始化

【讨论】:

  • 我会在这个答案中补充一点,如果长度已经固定为 5,那么创建 Point[60] 是没有意义的。赞成。
  • 非常感谢您的工作:)
  • @Jean-François Savard:创建数组根本没有意义……
  • @Holger 当然只针对println,但我相信这是一个简化的sn-p。
  • @Jean-François Savard:在这是一个简化示例的前提下,其他 55 个数组条目也可能有用。为了给答案添加一些东西,我建议在构造时初始化值,即points[i] = new Point(scan.nextInt(), scan.nextInt());,而不是使用像points[i] = new Point(); points[i].x = scan.nextInt(); points[i].y = scan.nextInt();这样的三个语句
猜你喜欢
  • 2011-04-06
  • 2016-10-31
  • 2021-08-10
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 2015-11-23
相关资源
最近更新 更多