FireMonkey92 Ответов: 3

Программа для получения следующих выходных данных для данного входного сигнала


Eg 1: Input: a1b10
       Output: abbbbbbbbbb
Eg: 2: Input: b3c6d15
          Output: bbbccccccddddddddddddddd
The number varies from 1 to 99.


Что я уже пробовал:

static void printCharSeq(char c, int num) {
		while (num > 1) {
			System.out.print(c);
			num--;
		}
	}

void convert(String str) {
		char c[] = str.toCharArray();
		for (int i = 0; i < c.length; i++) {
			int val = 0;
			if ((c[i] >= '0' && c[i] <= '9')) {
				// val=c[i]-48;
				try {
					if (c[i + 1] >= '0' && c[i + 1] <= '9') {
						String a1 = String.valueOf(c[i] - 48);
						String a2 = String.valueOf(c[i + 1] - 48);
						val = Integer.parseInt(a1 + a2);
						// System.out.println(val);
						printCharSeq(c[i - 1], val);
						i++;
					} else {
						val = c[i] - 48;
						printCharSeq(c[i - 1], val);
					}
				} catch (ArrayIndexOutOfBoundsException ex) {
					val = c[i] - 48;
					printCharSeq(c[i - 1], val);
				}
			} else {
				System.out.print(c[i]);
				// printCharSeq(c[i], val);
			}
		}
	}


Here This logic works perfectly but when i try to 
input : v99t100cvrx2
Output : vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvttttttttttcvrxx

it prints t 10 times too. i don't know ether it is correct or wrong. please help me to find it out the logic is correct for different inputs.

3 Ответов

Рейтинг:
1

Richard MacCutchan

Чтобы преобразовать последовательность числовых символов в целочисленное значение, вам понадобится простой цикл, подобный этому:

Set value = 0
For each character:
    if character is a number:
        set tempval = character - '0'
        multiply value by 10
        add tempval to value
    else:
        print the current character value times
// continue with the remaining processing.


Рейтинг:
0

Patrice T

Цитата:
он тоже печатает Т 10 раз. я не знаю, правильно это или нет.

Я думаю, что это правильно, потому что вы также утверждаете, что:
Цитата:
Это число варьируется от 1 до 99.

Давайте предположим, что код обрабатывает числа только с 2 цифрами.
Если вы хотите получить более 2 цифр, вы должны соответствующим образом изменить код.
Вместо того чтобы иметь код для обработки 1 цифры и код для обработки 2 цифр, я бы использовал цикл.

Eg 1: Input: a1b10
       Output: abbbbbbbbbb

это кодирование с переменной длиной строки продолжительность выполнения кодирования
Кодировка длины пробега - Википедия[^]


Рейтинг:
0

DeenaDhayaluM

Приведенный ниже код является полным кодом последовательности символов данного числа и условием,учитывая, что предел находится между 1-99, он не превышает предела, если он это делает, то принимает первые две цифры числа
Например, если его 100=10 раз он печатает соответствующий символ,эта программа основана на позициях массива,прежде чем вы это сделаете,вы должны рассмотреть его, иначе он испортит весь код

import java.util.Scanner;
class CharSequence
{
static void PrintSeq(char c, int num) 
{
		while (num > 1) 
		{
			System.out.print(c);
			num--;
		}
}

static void ToConvert(String str) 
   {
		char c[] = str.toCharArray();
		
		for (int i = 0; i < c.length; i++) 
		{
			int val = 0;
			
			if ( c[i] >= '0' && c[i] <= '9' ) 
			{
				try 
				{
					if ( c[i + 1] >= '0' && c[i + 1] <= '9' ) 
					{
					//Used to print more than 9 values
					String a1 = String.valueOf(c[i] - 48);
					String a2 = String.valueOf(c[i + 1] - 48);
						
						val = Integer.parseInt(a1 + a2);
						
						PrintSeq(c[i - 1], val);
						
						i++;
					}
					else 
					{
						//Used to print 0-9 values
						val = c[i] - 48;
						PrintSeq(c[i - 1], val);
					}
				} 
				catch (ArrayIndexOutOfBoundsException ex) 
				{
					val = c[i] - 48;
					PrintSeq(c[i - 1], val);
				}				
			} 
			else 
			{
				System.out.print(c[i]);				
			}
		}
	}
	public static void main(String args[]) throws Exception
	{
		Scanner s=new Scanner(System.in);
		
		String wrd=s.nextLine();
		ToConvert(wrd);
	}
}


Patrice T

Это ничего не добавляет, Вы получаете плагиат кода, о котором идет речь .

DeenaDhayaluM

Да,я действительно извинился за это,я просто стараюсь дать полный код без каких-либо ошибок в нем. Надеюсь, что это может помочь решить некоторые другие проблемы, и это дает четкое представление о том, как потоки данных.