Java - для цикла для вставки звездочек между символами введенной пользователем строки

Я работаю над заданием класса с несколькими отдельными частями, что я все сделал за исключением этой. Мне нужно получить строку ввода от пользователя и создать цикл (предпочтительно цикл for), который вставляет звездочки между каждым символом. Я полностью озадачен этим, поэтому, если бы кто-то мог просто помочь мне, я был бы признателен.

Я придумал это до сих пор

    } else if (choice.equalsIgnoreCase("C")) {
        System.out.print("Enter text here: ");
        String orig = input.nextLine();

        // To use for asterisk insertion
        int x = 1;
        int y = 2;

        for (int length = orig.length(); length > 0;) {
            orig = orig.substring(0,x) + "*" + orig.substring(y);
            x = x + 2;
            y = y + 2;
        }

    } 

Он прекрасно компилируется, но когда я тестирую его и вводю какой-то текст, появляется исключение в потоке "main" java.lang.StringIndexOutOfBoundsException: индекс строки вне диапазона: 5

3 ответа

Ваш цикл for не имеет допустимого завершающего предложения.

for (int length = orig.length(); length > 0;)

будет работать бесконечно, пока это не вызовет исключение.

    System.out.print("Enter text here: ");
    String orig = input.nextLine();

    for (int length = orig.length() - 1; length > 0; length--) {
        orig = orig.substring(0,length) + "*" + orig.substring(length);
    }

Производит

Enter text here: TestOutput T*e*s*t*O*u*t*p*u*t

Если вам нужен * после последнего 't', вы можете легко добавить это, удалив "- 1" в цикле for.

Попробуйте эту программу, чтобы добавить звездочки между каждым символом строки.

int leng;
Scanner sc= new Scanner(System.in);
System.out.println("enter the name");
String name=sc.nextLine();
leng=name.length();
char c[]=new char[leng];
for(int i=0;i<=leng-1;i++){
    c[i]=name.charAt(i);

    System.out.print(c[i]);
    if(i<leng-1)
        System.out.print("*");
}

Не используйте переменные без необходимости. Это только делает код более сложным и трудным для чтения.

    String orig = "my test";
    StringBuilder result = new StringBuilder();

    for (int i = 0; i < orig.length() -1;i++) {
        result.append(orig.charAt(i));
        result.append('*');
    }
    result.append(orig.charAt(orig.length()-1));
Другие вопросы по тегам