2016-10-19 7 views
1

У меня возникли проблемы с пониманием программы, которую мне нужно написать для класса. Моя программа работает так, как должна, но проблема заключается в том, что она хочет, чтобы я не печатал в своих методах. Я смущен тем, как я должен выводить свои значения, потому что мои методы должны быть недействительными в соответствии с проблемой (которая ничего не возвращает), и я не могу распечатать их внутри.Как использовать метод void без печати?

Вот вопрос:

Разработка и реализация программы Java (назовите его ArrayMethods), который определяет 4 метода следующим образом:

INT arrayMax (INT [] массив)

Int arrayMin (INT [] массив)

недействительного arraySquared (INT [] массив)

недействительного arrayReverse (INT [] массив)

Протестируйте свои методы, создав массив длиной 5 в вашем основном методе и заполнив его случайными числами от 1 до 1000. Затем ваша программа должна отображать исходный массив, отображать наименьшее число в массиве, отображать наибольшее число в массив, отобразить почитаемый массив и отобразить квадрат каждого значения в массиве. Основной метод shoudl вызывается каждый метод ровно один раз, при этом каждый вызов использует исходный массив в качестве фактического параметра. Отсутствует печать внутри методов. Документируйте свой код и правильно организуйте/размещайте свои выходы. При необходимости используйте escape-символы и объекты форматирования.

Итак, снова мой вопрос: как использовать эти методы без печати, если я не могу вернуть значение? Если бы кто-нибудь мог дать мне понять, как это решить, мы будем очень благодарны.

import java.util.Random; 
import java.util.Arrays; 
public class ArrayMethods 
{ 
    public static void main (String[] args) 
    { 
    int[] array = new int[5]; 
    array[0] = (int)(Math.random() * (1000 - 1)) + 1; 
    array[1] = (int)(Math.random() * (1000 - 1)) + 1; 
    array[2] = (int)(Math.random() * (1000 - 1)) + 1; 
    array[3] = (int)(Math.random() * (1000 - 1)) + 1; 
    array[4] = (int)(Math.random() * (1000 - 1)) + 1; 
    System.out.println("The values within the array are: " + Arrays.toString(array)); 
    System.out.println("The maximum value within the array is: " + arrayMax(array)); 
    System.out.println("The minimum value of the array is: " + arrayMin(array)); 
    System.out.print("The values within the array (squared) are: "); 
    arraySquared(array); 
    System.out.print("\n"); 
    System.out.print("The array reversed is: "); 
    arrayReverse(array); 
    } 
    public static int arrayMax (int[] array) 
    { 
    int max = 0; 
    for (int i = 0; i < array.length; i++) 
     { 
      if (array[i] > max) 
       { 
       max = array[i]; 
       } 
     } 
    return max; 
    } 

    public static int arrayMin (int[] array) 
    { 
    int min = 1000; 
     for (int i = 0; i < array.length; i++) 
       { 
       if (array[i] < min) 
        { 
       min = array[i]; 
        } 
       } 
    return min; 
    } 

    public static void arraySquared (int[] array) 
    { 
     int[] array2 = new int[5]; 
    for (int i = 0; i < array.length; i++) 
     { 
      array2[i] = array[i] * array[i]; 
      System.out.print(array2[i]); 
       while (i < array.length - 1) 
       { 
       System.out.print(", "); 
       break; 
       } 
     } 
    } 

    public static void arrayReverse (int[] array) 
    { 
    for(int i = array.length - 1; i >= 0; i--) 
     { 
      System.out.print(array[i] + " "); 
     } 

    } 
} 
+0

Функции, которые они говорят вам написать обратные ints, а не void. ArraySquared и arrayReversed arent должны быть недействительными в соответствии с указаниями, которые вы указали. Так что да, вы должны возвращать ценности. – Carcigenicate

+0

Исправить. Но посмотрите на два других метода внизу. Они недействительны. Я забыл добавить это к моему вопросу. – warriorpx

+0

Следует отметить, что если функция не возвращает значение, ваша * только * другая опция предназначена для изменения глобального состояния (например, для печати). Мутирование глобального состояния вместо возврата значения должно быть сделано как можно реже! Не завершайте это задание и считайте, что возвращающиеся ценности - это плохая или редкая вещь! – Carcigenicate

ответ

0

Для функций void в C# вы просто используете ключевое слово «выход» или «ref». Если они настаивают на Java, Java не имеет эквивалента, но вы можете сделать что-то подобное с объектом.

public class PassArray 
    { 
     public int[] array; 

     public PassArray(int[] array) 
     { 
      this.array = array; 
     } 
    } 

    public static void Reverse(PassArray arrayHolder) 
    { 
     int[] reversed = new int[arrayHolder.array.Length]; 

     int j = 0; 

     for (int i = arrayHolder.array.Length - 1; i >= 0; i--) 
     { 
      reversed[j] = arrayHolder.array[i]; 
      j++; 
     } 

     arrayHolder.array = reversed; 
    } 

    static void Main(string[] args) 
    { 
     int[] toReverse = new[] { 10, 30, 2, 1, 3, 100, 340 }; 

     PassArray passedObject = new PassArray(toReverse); 

     Reverse(passedObject); 
     // passedObject.array will now have the reversed array 
    } 

Очевидно, что это может быть улучшено, но оно должно по крайней мере дать правильную идею.