2014-02-15 4 views
1

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

import java.util.Scanner; 
public class DoubleLetters{ 
    public static void main(String[]args){ 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Enter a statement"); 
    String x = scan.nextLine(); 
    String y = x.replace("! ","!!! "); 
    for(int j=0; j< x.length(); j++){ 
     System.out.print(y.charAt(j)); 
     System.out.print(y.charAt(j)); 
    } 
    } 
} 

Удвоение буквы работают, но не утроить восклицательный знаки. Я попытался использовать метод replace, и он не сработал. Пожалуйста, любая помощь приветствуется.

ответ

0

Просто добавьте, если заявление внутри цикла

if(y.charAt(j) == '!') { 
    System.out.print(y.charAt(j)); 
} 

и удалить пустые пространства в заменить метод

String y = x.replace("!","!!!"); 
+0

Это сработало отлично, спасибо! – user3312944

0

попробовать этот

String y = x.replace("!","!!!"); 

или это

for (char c : x.toCharArray()) { 
     System.out.print(c); 
     System.out.print(c); 
     if (c == '!') { 
      System.out.print(c); 
     } 
    } 
+0

Я не должен быть в состоянии использовать массивы еще и мой учитель предложил использовать метод Character.isLetter (CH) каким-то образом (хотя я не обязательно), но я не знаю, в каком way – user3312944

0

Преобразовать строку в символ массива, чем сделать двойной и триплет и дисплей. Начните чтение с левой стороны и перейдите в правую сторону с использованием массива символов обновления double и triplet и, наконец, результат отображения (char array).

+0

Я не думаю, что мне еще разрешено использовать массивы, только условные выражения и мой профессор предложил использовать следующий метод (хотя мне это не нужно): Character.isLetter (ch), но я не знаю, в чем way – user3312944

0

Вы могли бы пойти на все символы и добавить их к StringBuilder:

String str = /* recieved from scanner */ 
StringBuidler builder = new StringBuilder(); 

for (char c : str.toCharArray()) { 
    // Any character needs to be included at least once: 
    builder.append(c); 

    // If it's a letter, you need another copy (total of 2) 
    if (Character.isLetter(c)) { 
     builder.append(c); 
    // If it's an excalmation mark, you need another two copies (total of 3) 
    } else if (c == '!') { 
     builder.append(c); 
     builder.append(c); 
    } 
} 

System.out.println(builder); 

System.out.print (y.charAt (j)); System.out.print (y.charAt (j)); }

0

Попробуйте follwing код, он будет работать эффективно, как вам нравится,

import java.util.Scanner; 
public class DoubleLetters 
{ 
    public static void main(String[]args) 
    { 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Enter a statement"); 
    String x = scan.nextLine(); 
    for(int j=0; j< x.length(); j++) 
    { 
    if(y.charAt(j)=='!') 
    System.out.println("!!!"); 
    else 
    { 
      System.out.print(y.charAt(j)); 
      System.out.print(y.charAt(j)); 
    } 
    } 
    } 
} 
0

Как у havn't удалось заменить '!' , поэтому для другого подхода вместо замены вы можете токенизировать свою строку с помощью StringTokenizer в качестве этого фрагмента кода. и этим вы можете добавить то, что хотите, как для вашего дела в конце каждого ! u можете добавить еще 2 !!. код как.

System.out.println("---- Split by comma '!' ------"); 
    String s = "My Name !is !Manmohan"; //scanner string 
    System.out.println("---- Split by comma ',' ------"); 
    StringTokenizer st2 = new StringTokenizer(s, "!"); 
    String now = ""; 
    while (st2.hasMoreElements()) { 
     now += st2.nextElement() + "!!!"; 
    } 

    System.out.println(now.substring(0, now.length() - 3)); 
      //op ... My Name !!!is !!!Manmohan 
Смежные вопросы