2014-07-09 3 views
0

Я работаю над программой для класса и задаюсь вопросом, может ли кто-нибудь указать мне в правильном направлении. Раньше я работал с Java, но прошло некоторое время, и я действительно ржавый. Цель этой программы - предложить пользователю ввести номер телефона, обозначенный буквами (например, CALL HOME будет 225-5466), тогда программа отображает номер телефона на основе введенных букв.Текстовые массивы в Java

Мы должны хранить буквы, введенные пользователем, в массив, а затем конвертировать эти буквы в фактический номер телефона. Вот что я застрял на данный момент, я работал только с массивами, состоящими из чисел, поэтому не уверен, как установить это. Я предполагаю, что каждый индекс будет одной буквой, но как бы я сломал строку, введенную пользователем, на отдельные символы символов?

Я все еще в процессе размышления о том, как эта программа должна работать и помещать ее на бумаге, поэтому на самом деле не начали кодирование, поэтому я приношу свои извинения за отсутствие кода для обмена. Но это то, что я думал должен был бы произойти после того, как письмо представление телефонных номеров были помещены в массив:

Объявлять переменные для каждой буквы, как

int a = 1 
int b = 1 
int c = 1 
int d = 2 

и т.д. Или есть более эффективный способ сделать это? Затем используйте инструкции if для каждого индекса, например,

if [0] == a || b || c 
    [0] = 1 
if [0] == d || e || f 
    [0] = 2 

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

+0

Возможно, попробуйте использовать хэш. –

+0

- пример ввода-вывода! Что вводит пользователь и что вы хотите вернуть для этого примера? –

+3

Возможно, просто бросать код на свой экран - это правильный подход. Это достаточно простая программа, поэтому свяжитесь со своим внутренним выродком и пусть проект органично движется, основываясь на инстинкте. Вы получите намного больше от упражнения, страдая от проблем, вместо того, чтобы просить о помощи, прежде чем он вам действительно понадобится. Сохраните ваши вопросы, когда вы столкнетесь с конкретной проблемой. – MarsAtomic

ответ

2

Просто используйте String#toCharArray:

char[] characters = string.toCharArray(); 

Вы можете получить отдельные символы из строки.

Вы можете использовать с помощью операторов if, чтобы узнать, какие символы соответствуют количеству. Но есть более элегантные подходы. Я не уверен, что вы использовали Map<K, V>, но вы можете настроить Map<String, Integer>, который отображает письмо в его целочисленное представление. Тогда вам просто придется перебирать символы в строке и искать их значение.

Поскольку это домашнее задание, это примерно столько же информации, что я считаю уместным. Используя то, что я вам дал, вы должны придумать алгоритм. Просто начните писать код, даже если вы не знаете, как будет выглядеть конечный результат. Это даст вам следующие преимущества:

  • Даёт вам более четкое представление о проблеме.
  • Ознакомится с проблемным пространством.
  • Помогите вам визуализировать и понять вашу проблему и алгоритм.
+1

Огромное вам спасибо! И это именно та помощь, которую я искал, если бы программа, написанная для меня, не сильно помогла бы мне в будущих программах:) –

+0

Рад помочь! Удачи! :) –

+0

Еще одна вещь, так как буквы, помещенные в массив, вводятся от пользователя, мне сначала нужно было бы установить переменную для этой строки? Я знаю, что обычно при вводе добавляется оператор, такой как int variable = input.nextInt(), задавался вопросом, как это применимо здесь? –

0

Что вы можете сделать, это создать 2-мерный массив и методы для проверки ввода на него. Например, вы можете сделать следующее:

Создайте массив numbers длины 10. Каждый индекс соответствует номеру, который вы должны вызвать. Теперь каждая запись массива чисел представляет собой массив символов.Так что в конце концов у вас есть что-то вроде этого: numbers = [['w/e you want for 0'],['a','b','c'],['d','e','f'], ['g','h','i'], ... etc ]

При разборе входной строки вы сравнить каждый символ с помощью метода, как это:

private int letterToNumber(char c){ 
    for(i = 0; i < numbers.length; i++) 
     if(contains(numbers[i], c) return i; 
} 

и ваши содержит() метод должен быть что-то подобное

private boolean contains(char[] chars, char c){ 
    for(char x : chars) 
     return(x == c)? true; false; 
} 
Смежные вопросы