#java #arrays #input
#java #массивы #ввод
Вопрос:
Я совершенно новичок в языке Java. Я все еще учусь и практикую это, но при решении проблемы я застрял на этом. Что я хочу сделать, так это добавить 2 элемента на строку в 2 отдельных массива. Первый элемент переходит в массив X, а второй элемент переходит в массив Y.
public static void main (String[] args) throws IOException {
BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
double[] X = new double[n];
double[] Y = new double[n];
String[] elem = reader.readLine().split(" ");
for(int i = 0; i < n; i )
{
X[i] = Integer.parseInt(elem[n]);
Y[i] = Integer.parseInt(elem[n]);
}
System.out.println(X, Y);
}
ввод:
3 4
1 1
2 3
где первый столбец — это массив X, а второй столбец — массив Y. Я несколько раз играл с кодом, но он по-прежнему выдает мне «Индекс 2 вне границ для длины 2».
Комментарии:
1. Соглашения об именовании Java имеют переменные и методы, начинающиеся со строчной буквы (x, y).
Ответ №1:
Вы должны прочитать свои строки внутри цикла for. X[i]
соответствует elem[0]
; Y[i]
соответствует elem[1]
. Например:
import java.io.*;
import java.util.*;
public class App {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
double[] X = new double[n];
double[] Y = new double[n];
for (int i = 0; i < n; i ) {
String[] elem = reader.readLine().split(" ");
X[i] = Integer.parseInt(elem[0]);
Y[i] = Integer.parseInt(elem[1]);
}
System.out.println(Arrays.toString(X));
System.out.println(Arrays.toString(Y));
}
}
Комментарии:
1. Большое спасибо. это действительно помогло и работало по мере необходимости
Ответ №2:
Эта часть неверна:
for(int i = 0; i < n; i )
{
X[i] = Integer.parseInt(elem[n]);
Y[i] = Integer.parseInt(elem[n]);
Кажется, что это должно быть
for(int i = 0; (i - 1)< n; i = 2) // adding two because you are reading two values from elem in every iteration. Changed check to i - 1 to fix case where an odd number of entries will cause an ArrayOutOfBoundsException in elem on i/2 1
{
X[i/2] = Integer.parseInt(elem[i]);
Y[i/2] = Integer.parseInt(elem[i] 1);
(В моем ответе здесь была ошибка. Это было исправлено)
В качестве альтернативы:
for(int i = 0; i < n; i )
{
if (i % 2 == 0) X[i/2] = Integer.parseInt(elem[i]);
else Y[i/2] = Integer.parseInt(elem[i]);