# Make 3 functions into one

**URL:** <https://discourse.processing.org/t/make-3-functions-into-one/26101>\
**Category:** Coding Questions\
**Created:** [December 9, 2020, 9:14pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101 "2020-12-09T21:14:18Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![vestergaard12](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vestergaard12](https://discourse.processing.org/u/vestergaard12)\
**Post date:** [December 9, 2020, 9:14pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/1 "2020-12-09T21:14:18Z")

</div>

Hello Processing foundation  
I have this really simple question and I know it might seem very easy to do, but I cannot see how to do it correctly.  
I have these 3 functions which i want to compromise to one simple function:

```auto
char[] explode(String s) { 
  text[0] = s;
  c = new char[text[0].length()];

  for (int i = 0; i < text[0].length(); i++) {
    c[i] = text[0].charAt(i);
  }

  return c;
}

 char[] explode2(String s2) {
  text[1] = s2;
  c2 = new char[text[1].length()];

  for (int i = 0; i < text[1].length(); i++) {
    c2[i] = text[1].charAt(i);
  }

  return c2;
}

char[] explode3(String s3) { 
  text[2] = s3;
  c3 = new char[text[2].length()];

  for (int i = 0; i < text[2].length(); i++) {
    c3[i] = text[2].charAt(i);
  }

  return c3;
}

```

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 9:20pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/2 "2020-12-09T21:20:14Z")

</div>

```auto

void setup() {
  char[] carr1 = explode("Hello"); 
  for (char c : carr1) 
    println(c);
}//

char[] explode(String s3) { 
  return 
    s3.toCharArray();
}

```

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 9:29pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/3 "2020-12-09T21:29:10Z")

</div>

> [@vestergaard12](#):
>
> I have these 3 functions which i want to compromise to one simple function:

they are almost identical. Difference is ` text[2] = s3;`.

Hence:

```auto

String[] textArr=new String[3]; 

void setup() {
  char[] carr1 = explode("Hello", 0); 
  char[] carr2 = explode("You", 1); 
  char[] carr3 = explode("There", 2);

  for (String s : textArr) 
    println(s); 
  for (char c : carr1) 
    println(c);
}//

char[] explode(String s_, int index_) { 
  textArr[index_] = s_;
  return 
    s_.toCharArray();
}

```

---

<div class="post-metadata">

**Author:** ![vestergaard12](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vestergaard12](https://discourse.processing.org/u/vestergaard12)\
**Post date:** [December 9, 2020, 9:36pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/4 "2020-12-09T21:36:32Z")

</div>

> [@Chrisir](#):
>
> `String[] textArr=new String[3]; `

Thank you very much

But what if my string array is 3 dimensional?

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 9:37pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/5 "2020-12-09T21:37:50Z")

</div>

What do you mean?

Strings distributed in a cube??

---

<div class="post-metadata">

**Author:** ![vestergaard12](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vestergaard12](https://discourse.processing.org/u/vestergaard12)\
**Post date:** [December 9, 2020, 9:39pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/6 "2020-12-09T21:39:53Z")

</div>

something like:

```auto
String[][] ord = {{ "hello", "how", "are", "you" }, 
  { "hello2", "how2", "are2", "you2" }}; 

```

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 9:40pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/7 "2020-12-09T21:40:22Z")

</div>

> [@vestergaard12](#):
>
> if my string array is 3 dimensional?

That would mean that you have several chess boards (2D grids) stacked on top of each other.

on each cell field one word is placed.

`String[][][] = new String [3][3][3];`

etc.

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 9:41pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/8 "2020-12-09T21:41:23Z")

</div>

> [@vestergaard12](#):
>
> ```auto
> String[][] ord = {{ "hello", "how", "are", "you" }, 
> { "hello2", "how2", "are2", "you2" }}; 
> 
> ```

two-dimensional: a grid

see tutorials [Two-Dimensional Arrays / Processing.org](https://www.processing.org/tutorials/2darray/)

---

<div class="post-metadata">

**Author:** ![vestergaard12](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vestergaard12](https://discourse.processing.org/u/vestergaard12)\
**Post date:** [December 9, 2020, 9:41pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/9 "2020-12-09T21:41:25Z")

</div>

> [@Chrisir](#):
>
> ```auto
> for (String s : textArr) 
> println(s); 
> 
> ```

What do you when write here? 🙂

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 9:42pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/10 "2020-12-09T21:42:57Z")

</div>

> [@vestergaard12](#):
>
> What do you when write here? 🙂

This is a short form for the normal for loop with `for (int =0.... )`

It says for each String in the array textArr do the following

In every iteration of the loop, s gets the next value in textArr

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 9:48pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/11 "2020-12-09T21:48:55Z")

</div>

here is an example with a 2D array of String

```auto

String[] textArr=new String[3]; 

String[][] ord = {
  { "hello", "how", "are", "you" }, 
  { "hello2", "how2", "are2", "you2" }
}; 

char[][] result = new char [2*4][];   

void setup() {

  int k=0; 

  for ( String[] arrS : ord ) {
    for ( String s : arrS ) {
      result[k] = explode(s, 0);
      k++;
    }
  }

  // -----------------------

  for (char[] cArr : result)
    for (char c : cArr)
      println(c);
}//

char[] explode(String s_, int index_) { 
  textArr[index_] = s_;
  return 
    s_.toCharArray();
}

```

---

<div class="post-metadata">

**Author:** ![vestergaard12](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vestergaard12](https://discourse.processing.org/u/vestergaard12)\
**Post date:** [December 9, 2020, 9:57pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/12 "2020-12-09T21:57:41Z")

</div>

Thank you very much Chrisir. This works very well.  
But what if I only want the explode()-function to explode specified words in the string-array (ord), and not the whole string-array?  
Because first I choose a random word from the string-array, which is put in the variables text[0], text[1], and text[2], and then i want these words to be split up in chars

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 10:03pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/13 "2020-12-09T22:03:31Z")

</div>

> [@vestergaard12](#):
>
> explode specified words in the string-array (ord), and not the whole string-array?

you can pass the two necessary indexes to explode and explode only that word

e.g. 2,1

---

<div class="post-metadata">

**Author:** ![vestergaard12](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vestergaard12](https://discourse.processing.org/u/vestergaard12)\
**Post date:** [December 9, 2020, 10:05pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/14 "2020-12-09T22:05:48Z")

</div>

Where do I do this in the code?

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 10:06pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/15 "2020-12-09T22:06:40Z")

</div>

just in the explode function

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [December 9, 2020, 10:07pm UTC](https://discourse.processing.org/t/make-3-functions-into-one/26101/16 "2020-12-09T22:07:37Z")

</div>

in setup you say

```auto
      result[k] = explode(2,1);

```
