x = 0.0 y = 0.0
x = 0.0 y = 0.0
x = 0.0 y = 0.0
x = 0.0 y = 0.0
x = 0.0 y = 0.0
x = 0.0 y = 0.0
x = 0.0 y = 0.0
Реализовать функциональность абстрактного класса AbstractArrayOfPoints, приведенного в примере, через использование двумерного массива вещественных чисел. Каждая строка массива должна соответствовать точке.
package r.t.y;
public class Point {
private double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public void setPoint(double x, double y) {
this.x = x;
this.y = y;
}
}
package r.t.y;
public abstract class AbstractArrayOfPoints {
public abstract void setPoint(int i, int j, double x, double y);
public abstract double getX(int i, int j);
public abstract double getY(int i, int j);
public abstract int count();
public abstract void addPoint(double x, double y);
public abstract void removeLast();
public void sortByX() {
boolean mustSort;
do {
mustSort = false;
for (int i = 0; i < count() - 1; i++) {
for (int j = 0; j < count() - 1; j++) {
if (getX(i, j) > getX(i + 1, j + 1)) {
double x = getX(i, j);
double y = getY(i, j);
setPoint(i, j, getX(i + 1, j + 1), getY(i + 1, j + 1));
setPoint(i + 1, j + 1, x, y);
mustSort = true;
}
}
}
}
while (mustSort);
}
public String toString() {
String s = "";
for (int i = 0; i < count(); i++) {
for (int j = 0; j < count(); j++) {
s += "x = " + getX(i, j) + " \ty = " + getY(i, j) + "\n";
}
}
return s + "\n";
}
public void test() {
addPoint(22, 45);
addPoint(4, 11);
addPoint(30, 5.5);
addPoint(-2, 48);
//sortByX();
System.out.println(this);
}
}
package r.t.y;
import java.util.Arrays;
public class ArrayWithTwoArrays extends AbstractArrayOfPoints {
private double [][]axy = new double[4][4];
protected final static int cX = 0;
protected final static int cY = 0;
// protected final static int DIRECTION = 0;
@Override
public void setPoint(int i, int j, double x, double y) {
axy[i][cX] = x;
axy[i][cY] = y;
}
@Override
public double getX(int i, int j) {
return axy[i][cX];
}
@Override
public double getY(int i, int j) {
return axy[i][cX];
}
@Override
public int count() {
return axy.length; // Можна ay.length, вони однакові
}
@Override
public void addPoint(double x, double y) {
double[][] axy1 = new double[axy.length + 1][axy.length+1];
System.arraycopy(axy, 0, axy1, 0, axy.length);
axy1[axy.length][axy.length] = getX(0,0);
axy1[axy.length][axy.length] = getY(0,0);
axy = axy1;
// double[] ay1 = new double[ay.length + 1];
// System.(ay, 0, ay1, 0, ay.length);
//ay1[ay.length] = y;
//ay = ay1;
}
@Override
public void removeLast() {
if (count() == 0) {
return;
}
double[][] axy1 = new double[axy.length - 1][axy.length - 1];
System.arraycopy(axy, 0, axy1, 0, axy1.length);
axy = axy1;
// double[] ay1 = new double[ay.length - 1];
//System.arraycopy(ay, 0, ay1, 0, ay1.length);
//ay = ay1;
}
public static void main(String[] args) {
new ArrayWithTwoArrays().test();
}
}
поставьте брэйкпойнт в r.t.y.ArrayWithTwoArrays.getX
на 17 строке (см стэктрейс) и запустите дебаг. думаю вы увидете, что массив axy
пустой, а поэтому попытка получить его первый (т.е. 0-ой) элемент заканчивается эксепшном.
private double [][] axy = new double[][]{};
Вот этой строчкой Вы создаёте массив с 0 элементов. Естественно, при попытке обратиться к элементам этого массива в методе setPoint Вы получаете ArrayIndexOutOfBoundsException (выход индекса за пределы границ массива). Короче говоря, создавайте массив нужной размерности прежде чем в него что-то помещать, в Java массивы сами собой не растягиваются =)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
LogcatEvent LogДобавляя тестовый ad unit ID(с офицсайта AdMob for Androids)(ca-app-pub-3940256099942544/6300978111), всё работает отлично, и тип эта реклама поздравляет меня, что...
Делаю калькулятор на Java 8Надо написать регулярное выражение для разбиение строки на лексемы
Использую библиотеку J2V8Мне необходимо запустить файл node