Basically the issue is that once the main method completes, it prompts to restart the code or not, except it terminates after prompting, no matter what I enter. How do I fix this?
import java.awt.AWTException;
import java.util.Scanner;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.Random;
public class PasteTyper {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (true) {
Random rand = new Random();
System.out.print("\nEnter what to paste: ");
String input = scan.nextLine();
System.out.print("\nEnter typing speed (10 is reccommended) (Lower is faster, higher is slower): ");
int speed = scan.nextInt();
try{Thread.sleep(3000);} catch(InterruptedException e){}
for(int i = 0; i < input.length(); i++){
try{Thread.sleep(rand.nextInt(30 * speed));} catch(InterruptedException e){}
int delete = rand.nextInt(20 * speed);
if(delete == 5){
int randomChar = rand.nextInt(10);
switch(randomChar){
case 1: convert('a'); break;
case 2: convert('b'); break;
case 3: convert('c'); break;
case 4: convert('d'); break;
case 5: convert('e'); break;
case 6: convert('f'); break;
case 7: convert('g'); break;
case 8: convert('h'); break;
case 9: convert('i'); break;
default:convert('j'); break;
}
try{Thread.sleep(40 * speed);} catch(InterruptedException e){}
doType(KeyEvent.VK_BACK_SPACE);
try{Thread.sleep(20 * speed);} catch(InterruptedException e){}
}
if(input.charAt(i) == '\\') {
if(input.charAt(i + 1) == 't') {
convert('\t');
i++;
}
else if(input.charAt(i + 1) == 'n') {
convert('\n');
i++;
}
else
convert(input.charAt(i));
}
else
convert(input.charAt(i));
}
System.out.print("\nDo you want to paste again? (y/n): ");
String choice = scan.next();
if(!choice.equals("y"))
break;
}
scan.close();
}
public static void convert(char character){
switch(character){
case '\t' -> doType(KeyEvent.VK_TAB);
case '\n' -> doType(KeyEvent.VK_ENTER);
case 'a' -> doType(KeyEvent.VK_A);
case 'b' -> doType(KeyEvent.VK_B);
case 'c' -> doType(KeyEvent.VK_C);
case 'd' -> doType(KeyEvent.VK_D);
case 'e' -> doType(KeyEvent.VK_E);
case 'f' -> doType(KeyEvent.VK_F);
case 'g' -> doType(KeyEvent.VK_G);
case 'h' -> doType(KeyEvent.VK_H);
case 'i' -> doType(KeyEvent.VK_I);
case 'j' -> doType(KeyEvent.VK_J);
case 'k' -> doType(KeyEvent.VK_K);
case 'l' -> doType(KeyEvent.VK_L);
case 'm' -> doType(KeyEvent.VK_M);
case 'n' -> doType(KeyEvent.VK_N);
case 'o' -> doType(KeyEvent.VK_O);
case 'p' -> doType(KeyEvent.VK_P);
case 'q' -> doType(KeyEvent.VK_Q);
case 'r' -> doType(KeyEvent.VK_R);
case 's' -> doType(KeyEvent.VK_S);
case 't' -> doType(KeyEvent.VK_T);
case 'u' -> doType(KeyEvent.VK_U);
case 'v' -> doType(KeyEvent.VK_V);
case 'w' -> doType(KeyEvent.VK_W);
case 'x' -> doType(KeyEvent.VK_X);
case 'y' -> doType(KeyEvent.VK_Y);
case 'z' -> doType(KeyEvent.VK_Z);
case 'A' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_A);
case 'B' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_B);
case 'C' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_C);
case 'D' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_D);
case 'E' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_E);
case 'F' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_F);
case 'G' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_G);
case 'H' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_H);
case 'I' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_I);
case 'J' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_J);
case 'K' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_K);
case 'L' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_L);
case 'M' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_M);
case 'N' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_N);
case 'O' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_O);
case 'P' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_P);
case 'Q' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_Q);
case 'R' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_R);
case 'S' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_S);
case 'T' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_T);
case 'U' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_U);
case 'V' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_V);
case 'W' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_W);
case 'X' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_X);
case 'Y' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_Y);
case 'Z' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_Z);
case '`' -> doType(KeyEvent.VK_BACK_QUOTE);
case '0' -> doType(KeyEvent.VK_0);
case '1' -> doType(KeyEvent.VK_1);
case '2' -> doType(KeyEvent.VK_2);
case '3' -> doType(KeyEvent.VK_3);
case '4' -> doType(KeyEvent.VK_4);
case '5' -> doType(KeyEvent.VK_5);
case '6' -> doType(KeyEvent.VK_6);
case '7' -> doType(KeyEvent.VK_7);
case '8' -> doType(KeyEvent.VK_8);
case '9' -> doType(KeyEvent.VK_9);
case '-' -> doType(KeyEvent.VK_MINUS);
case '=' -> doType(KeyEvent.VK_EQUALS);
case '~' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_BACK_QUOTE);
case '!' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_1);
case '@' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_2);
case '#' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_3);
case '$' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_4);
case '%' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_5);
case '^' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_6);
case '&' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_7);
case '*' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_8);
case '(' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_9);
case ')' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_0);
case '_' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_MINUS);
case '+' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_EQUALS);
case '[' -> doType(KeyEvent.VK_OPEN_BRACKET);
case ']' -> doType(KeyEvent.VK_CLOSE_BRACKET);
case '\\' -> doType(KeyEvent.VK_BACK_SLASH);
case '{' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_OPEN_BRACKET);
case '}' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_CLOSE_BRACKET);
case '|' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_BACK_SLASH);
case ';' -> doType(KeyEvent.VK_SEMICOLON);
case ':' -> doType(KeyEvent.VK_SHIFT,KeyEvent.VK_SEMICOLON);
case '\'' -> doType(KeyEvent.VK_QUOTE);
case '"' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_QUOTE);
case ',' -> doType(KeyEvent.VK_COMMA);
case '<' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_COMMA);
case '.' -> doType(KeyEvent.VK_PERIOD);
case '>' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_PERIOD);
case '/' -> doType(KeyEvent.VK_SLASH);
case '?' -> doType(KeyEvent.VK_SHIFT, KeyEvent.VK_SLASH);
case ' ' -> doType(KeyEvent.VK_SPACE);
default -> throw new IllegalArgumentException("Cannot type character " + character);
}
}
public static void doType(int keycode){
try{
Robot robot = new Robot();
robot.keyPress(keycode);
robot.keyRelease(keycode);
}
catch(AWTException e){}
}
public static void doType(int keycode1, int keycode2){
try{
Robot robot = new Robot();
robot.keyPress(keycode1);
robot.keyPress(keycode2);
robot.keyRelease(keycode1);
robot.keyRelease(keycode2);
}
catch(AWTException e){}
}
}
I tried making the main method its own method, then calling the method within a while loop in the main method. All the same result.