Массивы и строки не разрешаются в переменную - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь отредактировать массив с помощью метода. Я вырезал большую часть своего кода, чтобы попытаться изолировать ту часть, которую я не могу заставить работать.

import java.util.*;
public class moretesting {
   public static void shift() {
      for (int i = 0; i < message.length(); i++) {
          arr[i] = arr[i] + 1;
          if (arr[i] > 126) {
              arr[i] = arr[i] - 95;
          } else if (arr[i] < 32) {
              arr[i] = arr[i] + 95;
          }
      }
  }
   public static void main(String[] args) {
      String message = "abc";
      int arr[] = new int[message.length()];
        for (int i = 0; i < message.length(); i++) {
            arr[i] = message.charAt(i);
        }
   shift();
      System.out.println(Arrays.toString(arr));
   } 
}

Я получаю сообщение об ошибке «Исключение в потоке« main »java .lang.Error: нерешенные проблемы компиляции: сообщение не может быть разрешено arr не может быть разрешено в переменную (это повторяется несколько раз) в moretesting.shift (moretesting. java: 4) в moretesting.main (moretesting. java : 19) "

Я почти уверен, что это как-то связано с областью действия моих переменных, но я не могу этого понять. Это также мой первый пост здесь, так что извините, если форматирование не самое лучшее.

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Решение 1. Переменные arr и message должны иметь вид stati c

import java.util.*;

public class App {
    static int arr[];        // This declare
    static String message;   // This declare

    public static void shift() {
        for (int i = 0; i < message.length(); i++) {
            arr[i] = arr[i] + 1;
            if (arr[i] > 126) {
                arr[i] = arr[i] - 95;
            } else if (arr[i] < 32) {
                arr[i] = arr[i] + 95;
            }
        }
    }

    public static void main(String[] args) {
        message = "abc";
        arr = new int[message.length()];
        for (int i = 0; i < message.length(); i++) {
            arr[i] = message.charAt(i);
        }
        shift();
        System.out.println(Arrays.toString(arr));
    }
}`

Решение 2: передать аргументы в метод

import java.util.*;

public class App {
    public static void shift(int arr[], String message) {
        for (int i = 0; i < message.length(); i++) {
            arr[i] = arr[i] + 1;
            if (arr[i] > 126) {
                arr[i] = arr[i] - 95;
            } else if (arr[i] < 32) {
                arr[i] = arr[i] + 95;
            }
        }
    }

    public static void main(String[] args) {
        String message = "abc";
        int arr[] = new int[message.length()];
        for (int i = 0; i < message.length(); i++) {
            arr[i] = message.charAt(i);
        }
        shift(arr, message); // This pass arguments
        System.out.println(Arrays.toString(arr));
    }
}
1 голос
/ 09 июля 2020

Вам необходимо передать arr и message в качестве аргументов функции shift()

import java.util.*;
public class moretesting {
   public static void shift(String message, int[] arr) {
      for (int i = 0; i < message.length(); i++) {
          arr[i] = arr[i] + 1;
          if (arr[i] > 126) {
              arr[i] = arr[i] - 95;
          } else if (arr[i] < 32) {
              arr[i] = arr[i] + 95;
          }
      }
  }
   public static void main(String[] args) {
        String message = "abc";
        int arr[] = new int[message.length()];
        for (int i = 0; i < message.length(); i++) {
            arr[i] = message.charAt(i);
        }
        shift(message, arr);
        System.out.println(Arrays.toString(arr));
   } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...