#java #arrays #loops #class #methods
#java #массивы #циклы #класс #методы
Вопрос:
Добрый вечер, я снова борюсь… Я хочу, чтобы цикл из моего первого класса вычислял значение x, а затем помещал значение x в мой массив, а затем отображал массив в моем основном классе. В чем моя ошибка? Я был бы очень благодарен, если бы какой-либо совет мог решить эту проблему.
import java.util.Arrays;
public class Data {
public double for1() {
double x = 2;
for (int i = 0; i < 8; i ) {
x = x x;
}
return x;
}
double[] arr = { x, 3, 4, 4, -5, 4, 6, 2 }; // x cannot be resolved to a variable
}
//-------------
import java.util.Arrays;
public class Javaapp {
public static void main(String[] args) {
Data a = new Data();
a.for1();
System.out.println(Arrays.toString(a.arr));
}
}
Комментарии:
1. Как насчет
double[] arr = { for1(), 3, 4, 4, -5, 4, 6, 2 };
?2. @Nick это должен быть ответ, лучшее решение
Ответ №1:
Одной из возможностей было бы вызвать for1
функцию в вашем назначении массива. Если вы это сделаете, вам не нужно будет вызывать ее в main
подпрограмме:
import java.util.Arrays;
class Data {
public double for1() {
double x = 2;
for (int i = 0; i < 8; i ) {
x = x x;
}
return x;
}
double[] arr = { for1(), 3, 4, 4, -5, 4, 6, 2 };
}
public class Main
{
public static void main(String args[])
{
Data a = new Data();
System.out.println(Arrays.toString(a.arr));
}
}
Ответ №2:
Проблема в том, что переменная x
доступна только из метода for1()
. Решением для этого было бы переместить переменную x
за пределы метода или поместить x
в массив после вызова метода.
я бы рекомендовал приведенный ниже код, он будет работать до тех пор, пока for1()
вызывается первым.
import java.util.Arrays;
class Data {
public double for1() {
double x = 2;
for (int i = 0; i < 8; i ) {
x = x x;
}
//we set the first index in the array to our new x variable
arr[0] = x;
return x;
}
// v place holder value for now
double[] arr = { 2, 3, 4, 4, -5, 4, 6, 2 };
}
public class Main {
public static void main(String[] args) {
Data a = new Data();
a.for1();
System.out.println(Arrays.toString(a.arr));
}
}
Комментарии:
1. Да, это простое и короткое решение моей проблемы. Большой: Спасибо.
Ответ №3:
Основная проблема здесь заключается в том, что переменная x недоступна для массива arr. Это потому, что x существует только в области действия функции for1() . Самые простые способы обойти это:
- Сделайте x глобальной переменной
private double x = 2;
public void for1(){
for (int i = 0; i < 8; i ) {
x = x x;
}
}
double[] arr = { x, 3, 4, 4, -5, 4, 6, 2 };
- Сделайте for1() возвращающим x, как уже предлагало большинство людей
public double for1(){
double x = 2;
for (int i = 0; i < 8; i ) {
x = x x;
}
return x;
}
double[] arr = { for1(), 3, 4, 4, -5, 4, 6, 2 };