# Help for a beginner please (asking for input a multi-digit variable)

**URL:** <https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053>\
**Category:** Coding Questions\
**Created:** [February 24, 2021, 12:46pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053 "2021-02-24T12:46:42Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![freddukas](https://avatars.discourse-cdn.com/v4/letter/f/ea5d25/32.png) [@freddukas](https://discourse.processing.org/u/freddukas)\
**Post date:** [February 24, 2021, 12:46pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053/1 "2021-02-24T12:46:42Z")

</div>

Hello everyone,  
I’m quite new with coding and I would like to create a prime number detector using arduino.  
I have a pretty good idea how to do it using a divider variable and modulos.

My problem is : how can I create a type in for a several digits number I can convert to a variable to be checked by the code ?

I tried to create a code with keypressed and tried to play a little with variable but I can’t get a typed-in multi digits variable. how can I do this ??

thanks a lot for your help

Fred

First Code below

void draw(){  
background(255);  
println(num);

text(“CHIFFRE ENTRE 1-9”,80,100);

fill(255,0,0);

if (keyPressed) {text(“NOMBRE “+num,100,180); text(num,150,250); text(” X “,200,250);text(multi,250,250);text(”=”,300,250);text(multi\*num,350,250);

multi++;frameRate(1);}

else {multi=1;}

}

void keyPressed(){  
int keyNum = Character.getNumericValue(key);  
num = keyNum;  
}

---

<div class="post-metadata">

**Author:** ![CodeMasterX](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/codemasterx/32/2942_2.png) [@CodeMasterX](https://discourse.processing.org/u/CodeMasterX)\
**Post date:** [February 24, 2021, 2:46pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053/2 "2021-02-24T14:46:23Z")

</div>

You need to do a few things;

- 1st: allow only numbers to be entered
- 2nd: add a function (like if enter is pressed) to return the current text and reset the input
- 3rd: add a backspace function (press backspace to erase the last number)

here is my code for reference

> **Code**
>
> ```auto
> char acceptable[] = ("0123456789").toCharArray();
> String text = "";
> void setup() {
> size(600,600);
> textAlign(3,3);
> }
> void draw() {
> background(0);
> text(text,300,300);
> }
> void keyPressed() {
> if(keyCode == ENTER) {
> println(text);
> text = "";
> } else if(keyCode == BACKSPACE) {
> String newTxt = "";
> for(int i = 0; i < text.length()-1; i++) {
> newTxt += text.charAt(i);
> }
> text = newTxt;
> } else {
> for(int i = 0; i < acceptable.length; i++) if(acceptable[i] == key) text+=key;
> }
> }
> 
> ```

---

<div class="post-metadata">

**Author:** ![CodeMasterX](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/codemasterx/32/2942_2.png) [@CodeMasterX](https://discourse.processing.org/u/CodeMasterX)\
**Post date:** [February 24, 2021, 2:49pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053/3 "2021-02-24T14:49:44Z")

</div>

here is a version which makes the default input 0

> **V2**
>
> ```auto
> char acceptable[] = ("0123456789").toCharArray();
> String text = "0";
> void setup() {
> size(600,600);
> textAlign(3,3);
> }
> void draw() {
> background(0);
> text(text,300,300);
> }
> void keyPressed() {
> if(keyCode == ENTER) {
> println(text);
> text = "0";
> } else if(keyCode == BACKSPACE) {
> String newTxt = "";
> for(int i = 0; i < text.length()-1; i++) {
> newTxt += text.charAt(i);
> }
> text = ((newTxt.length() == 0)? "0" : newTxt);
> } else {
> for(int i = 0; i < acceptable.length; i++) if(acceptable[i] == key) text = (((text.equals("0"))? key+"" : (text + key)));
> }
> }
> 
> ```

---

<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:** [February 24, 2021, 2:54pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053/4 "2021-02-24T14:54:02Z")

</div>

Oh bad, I was working on something too…

😉

```auto

final int INPUT=0;
final int CALC=1; 
int state = INPUT;

String numInput=""; 
int num=0, multi=3;

void setup() {
  size(660, 660);
}

void draw() {
  background(255);
  //println(num);

  fill( 255, 0, 0);
  text("CHIFFRE ENTRE, submit with Enter: ", 80, 100);

  fill(2, 0, 255);
  text(numInput+caret(), 280, 100); 

  if (! numInput.equals("")&&state == CALC) {

    text("NOMBRE "+num, 100, 180); 
    text(num, 150, 250); 
    text(" X ", 200, 250);
    text(multi, 250, 250);
    text("=", 300, 250);
    text(multi*num, 350, 250);

    // multi++;
    // frameRate(1);
    //} else {
    // multi=1;
    //}
  } else {
  }
}

void keyPressed() {
  if (key==ENTER||key==RETURN) {
    //submit
    num = 
      int(numInput);
    state = CALC; 
    return;//leave
  }

  if (key==ESC) {
    state=INPUT; 
    key=0;
    return;
  }

  if (key==BACKSPACE) {
    if (numInput.length()>0) 
      numInput=numInput.substring(0, numInput.length()-1); 
    return;
  }

  if (key==CODED)
    return; // leave 

  // int keyNum = Character.getNumericValue(key);
  numInput += key;
}

String caret() {
  // Blinking cursor: return | or blank
  if (millis() % 1000 < 500) 
    return "|";
  else 
  return " ";
}

```

---

<div class="post-metadata">

**Author:** ![freddukas](https://avatars.discourse-cdn.com/v4/letter/f/ea5d25/32.png) [@freddukas](https://discourse.processing.org/u/freddukas)\
**Post date:** [February 24, 2021, 3:09pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053/5 "2021-02-24T15:09:05Z")

</div>

Wow that’s really heavy codes for me, I need to take my time reading and translate each line.

I will work on theses nex concepts

Thanks a lot for your help !!

---

<div class="post-metadata">

**Author:** ![freddukas](https://avatars.discourse-cdn.com/v4/letter/f/ea5d25/32.png) [@freddukas](https://discourse.processing.org/u/freddukas)\
**Post date:** [February 24, 2021, 4:16pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053/6 "2021-02-24T16:16:55Z")

</div>

Hello again,  
I designed this code with your ideas… I think it’s working but it’s still very ugly for now.  
I wonder there’s a lot of unuseful stuff inside this code but I didn’t understand everything yet.

here’s the code, could be fun or useful

Thanks again

final int INPUT=0;  
final int CALC=1;  
int state = INPUT;  
int modulo;

String numInput="";  
int num=0;

void setup() {  
size(660, 660);  
}

void draw() {  
background(255);  
//println(num);

fill( 255, 0, 0);  
text("CHIFFRE ENTRE, submit with Enter: ", 80, 100);

fill(2, 0, 255);  
text(numInput+caret(), 280, 100);

if (! numInput.equals("")&&state == CALC) {

```
text(num, 100, 180);for (int diviseur = 2; diviseur <num; diviseur++) {frameRate(1);modulo = num%diviseur;print(diviseur);print(" ");println(modulo);

                                                                            if (modulo==0) {background(255);text(num, 100, 180);text("pas premier/not a prime",200,300);text(diviseur,400,300);
                                                                                            text("x",450,300);text((num/diviseur),500,300);noLoop();}

```

} }}

void keyPressed() {  
if (key==ENTER||key==RETURN) {  
//submit  
num =  
int(numInput);  
state = CALC;  
return;//leave  
}

if (key==ESC) {  
state=INPUT;  
key=0;  
return;  
}

if (key==BACKSPACE) {  
if (numInput.length()\>0)  
numInput=numInput.substring(0, numInput.length()-1);  
return;  
}

if (key==CODED)  
return; // leave

// int keyNum = Character.getNumericValue(key);  
numInput += key;  
}

String caret() {  
// Blinking cursor: return | or blank  
if (millis() % 1000 \< 500)  
return “|”;  
else  
return " ";  
}

---

<div class="post-metadata">

**Author:** ![freddukas](https://avatars.discourse-cdn.com/v4/letter/f/ea5d25/32.png) [@freddukas](https://discourse.processing.org/u/freddukas)\
**Post date:** [February 24, 2021, 7:11pm UTC](https://discourse.processing.org/t/help-for-a-beginner-please-asking-for-input-a-multi-digit-variable/28053/7 "2021-02-24T19:11:48Z")

</div>

hello again,

I found a quite strange problem.

I found a way to create a prime numbers detectors

my problem is i succeeded to create a condition for a non prime number but after many attemps I can’t find the right condition to give to the code for recognize a prime number only.the code freeze.

do you have any idea ?? thanks a lot

final int INPUT=0;  
final int CALC=1;  
int state = INPUT;  
int modulo;

String numInput="";  
int num=0;

void setup() {  
size(800, 500);  
}

void draw() {  
background(0);textSize(50);textAlign(CENTER);

fill( 0, 255, 0);  
text(“Entrez un nombre”, 400, 170);

fill(255, 130, 0);  
textSize(80); text(numInput+caret(),400, 250);

if (! numInput.equals("")&&state == CALC) {

for (int diviseur = 2; diviseur \<num; diviseur=diviseur+1) {modulo = num%diviseur;print(num);print(" “);print(diviseur);print(” ");println(modulo);

```
                                                                            if (modulo==0) {background(0);
                                                                           
                                                                                 textSize(180);fill(0, 255, 0);text(num,400,200 );
                                                                                 textSize(80);fill(255, 130, 0);text("n'est pas premier",400 ,290);
                                                                                 textSize(120);fill(0, 255, 0);text(diviseur+"x"+(num/diviseur),400,450);
                                                                                 textSize(20);text(diviseur+"x"+(num/diviseur)+"="+num,700,400);
                                                                                 textSize(20);fill(100);text((diviseur+1)+"x"+(num/diviseur)+"="+((diviseur+1)*(num/diviseur)),700,420);
                                                                                                        text((diviseur+2)+"x"+(num/diviseur)+"="+((diviseur+2)*(num/diviseur)),700,440);
                                                                                                        text((diviseur+3)+"x"+(num/diviseur)+"="+((diviseur+3)*(num/diviseur)),700,460);
                                                                                                        text((diviseur+4)+"x"+(num/diviseur)+"="+((diviseur+4)*(num/diviseur)),700,480);
                                                                                                        text((diviseur-1)+"x"+(num/diviseur)+"="+((diviseur-1)*(num/diviseur)),700,380);
                                                                                                        text((diviseur-2)+"x"+(num/diviseur)+"="+((diviseur-2)*(num/diviseur)),700,360);
                                                                                                        text((diviseur-3)+"x"+(num/diviseur)+"="+((diviseur-3)*(num/diviseur)),700,340); }

```

} }}

void keyPressed() {  
if (key==ENTER||key==RETURN) {  
//submit  
num =  
int(numInput);  
state = CALC;  
return;//leave  
}

if (key==ESC) {  
state=INPUT;  
key=0;  
return;  
}

if (key==BACKSPACE) {  
if (numInput.length()\>0)  
numInput=numInput.substring(0, numInput.length()-1);  
return;  
}

if (key==CODED)  
return; // leave

// int keyNum = Character.getNumericValue(key);  
numInput += key;  
}

String caret() {  
// Blinking cursor: return | or blank  
if (millis() % 1000 \< 500)  
return “|”;  
else  
return " ";  
}
