Создание нового класса с параметрами из функции

Эта ошибка возникает при переполнении циклов цикла. Давайте рассмотрим простой пример:

class demo{
  public static void main(String a[]){

    int[] numberArray={4,8,2,3,89,5};

    int i;

    for(i=0;i<numberArray.length;i++){
        System.out.print(numberArray[i+1]+"  ");
    }
}

Сначала я инициализировал массив как «numberArray». то некоторые элементы массива печатаются с использованием цикла. Когда цикл запускает время «i», напечатайте элемент (numberArray [i + 1] .. (когда значение i равно 1, будет напечатан элемент numberArray [i + 1].) Предположим, что, когда i = (numberArray. length-2), последний элемент массива печатается. Когда значение «i» переходит к (numberArray.length-1), нет значения для печати. ​​В этот момент происходит «ArrayIndexOutOfBoundsException». Я надеюсь, что вы можете получить idea.thank you!

1
задан Julius Vainora 16 January 2019 в 14:11
поделиться

2 ответа

Вы также можете сохранить ваши параметры в качестве атрибутов вашего возвращаемого значения. Таким образом, вы не получите список обратно, если не хотите этого:

random_number_generator <- function(n,distribution,mean=NULL,sd=NULL,lambda=NULL,size=NULL,prob=NULL){

  if (distribution=="Normal"){

   x <- rnorm(n=n,mean=mean,sd=sd)

  }

  if (distribution=="Poisson"){

  x <- rpois(n=n, lambda=lambda)

  }

 if (distribution=="Binomial") {

  x <- rbinom(n=n,size=size,prob=prob)

 }

    attributes(x) <- list(distribution = distribution,
                          size = size,
                          prob = prob)
    class(x) <- "MyClass"

  return (x)
}

answer <- random_number_generator(n=10, distribution = "Binomial",size=15,prob=0.4)

summary.MyClass <- function(x) {
    stopifnot(inherits(x, "MyClass"))
    cat("\t\n", 
        sprintf("Sample size: %s\n", length(x)),
        sprintf("Mean: %s\n", mean(x)),
        sprintf("Standard Deviation: %s\n", sd(x)),
        sprintf("Distribution: %s\n", attr(x, "distribution")),
        sprintf("Size: %s\n", attr(x, "size")),
        sprintf("Prob: %s\n", attr(x, "prob"))
        )
}

summary(answer)
0
ответ дан trosendal 16 January 2019 в 14:11
поделиться

Мы могли бы сделать следующее:

random_number_generator <- function(n, distribution, mean = NULL, sd = NULL, lambda = NULL, size = NULL, prob = NULL) {
  if (distribution == "Normal")
    x <- rnorm(n = n, mean = mean, sd = sd)
  else if (distribution == "Poisson")
    x <- rpois(n = n, lambda = lambda)
  else if (distribution == "Binomial")
    x <- rbinom(n = n, size = size, prob = prob)
  out <- list(x = x, distribution = distribution, size = size, prob = prob)
  class(out) <- "MyClass"
  out
}

summary.MyClass <- function(obj) {
  stopifnot(inherits(obj, "MyClass"))
  cat("\t\n", 
      sprintf("Sample size: %s\n", length(obj$x)),
      sprintf("Mean: %s\n", mean(obj$x)),
      sprintf("Standard Deviation: %s\n", sd(obj$x)),
      sprintf("Distribution: %s\n", obj$distribution),
      sprintf("Size: %d\n", obj$size),
      sprintf("Probability: %s\n", obj$prob)
  )
}

answer <- random_number_generator(n = 10, distribution = "Binomial", size = 15, prob = 0.4)
summary(answer)
#   
#  Sample size: 10
#  Mean: 5.5
#  Standard Deviation: 1.64991582276861
#  Distribution: Binomial
#  Size: 15
#  Probability: 0.4

Итак, чтобы вернуть дополнительную информацию, нам нужно сохранить эту дополнительную информацию в качестве выходной информации из random_number_generator, что я сделал с

out <- list(x = x, distribution = distribution, size = size, prob = prob)
class(out) <- "MyClass"
0
ответ дан Julius Vainora 16 January 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: