| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > странная задачка |
| Автор: Rauko 13.10.2014, 21:23 |
| условие задачи - организовать ввод с клавиатуры строки(слово и 2 числа) и обрезать указанное слово по числам, например, вводим "he11ow0rld 2 9" и получаем на выходе "e11ow0rl" при этом не применять каких то замудренных функций(это взято из начала учебника, из примеров до указанного задания - ввод-вывод строк, числа фибоначи, простые формулы) из 7ми задач только эта не решается если кому не жалко уделить минут 10 для помощи - подскажите как реализовать чтение и распознование "границ" так же, если это возможно, подскажите ввод с клавиатуры, компилирующийся на java 1.7+, а то с примеров под 1.5 через раз компилится код... |
| Автор: sQu1rr 14.10.2014, 13:54 |
| Ну вы покажите что не получается. Для ввода - new Scanner(System.in) -> scan.nextString(), scan.nextInt(), scan.nextInt() а что значит распознование границ? если знаете что на вводу идет: слово, число, число, то пользуйтесь сканнером, он сам все распознает http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html |
| Автор: Rauko 15.10.2014, 06:39 |
| при попытке считать или присвоить значения переменным конфликтуют типы - при считывании в строку заносит char, а при работе с индексами в int что я делаю не так? распознавание границ означает, что одной строкой вводятся *слово* *номер первого символа* *номер последнего символа* я спрашивала у более опытных кодеров, как это делается, они сказали как один, что эту фигню надо написать с нуля вручную, что бы потом через несколько глав мне в учебнике показали альтернативу в 3 строки через какую то умную функцию... еще есть с другой задачкой маленькая проблемка - надо просто поменять местами знаки в словах введенной строки. тут снова проблема типов - если точнее, то читать и заносить считанное в массив компилятор отказывается, выводит ошибку, следовательно и показать определенное значение(определенный символ из строки через str[i] или длинну введенной строки через str.length отказывается - ошибка ввода или не может быть переменной). как это решить? да, я начинаю только java учить, прошу отнестись с пониманием - вокруг спросить не у кого, а через ваш сайт я когда то за неделю осилила паскаль... |
| Автор: Rauko 15.10.2014, 10:08 | ||
| Итого, у меня получилась следующая ерунда с одной ошибкой(это пока та, которую выдал компилятор, о правильности выполнения программы и верности результатов работы вообще речи пока не идет. алгоритм работы скорее всего еще будет правиться): Несоответствие типов: невозможно преобразовать Scanner в char[]
Я уже успела прочитать, что есть какая-то встроенная функция substring, которая весь вышеописанный бред делает самостоятельно и вроде даже по условию, но поставленная задача не включала в себя использование этой функции, а самодельную ее интерпритацию. Заставлю работать эту прогу - сделаю еще через substring для сравнения. Помогите заставить вышенаписанное запуститься дальше проверки 14ой строки - хочется увидеть результат работы и отладить алгоритм(для общего развития и лишней практики). Чисто в теории может заработать, хотя уверенности нет. Поясните пожалуйста, что не так и как впредь такого не допускать. И да, я таки краб... |
| Автор: Rauko 15.10.2014, 16:04 | ||||
| удалось откомпилировать и оргаизовать считывание данных... код, естественно, дальше этого самого считывания оказался более чем нерабочий, но дело еще в другом... вот так теперь выглядит начало программы:
но дело в другом. в конце программы была такая строка:
которая выдает параметры введенной строки. str.length в данном случае выдает только длинну ПЕРВОГО СЛОВА, игнорируя все пробелы, которые могут быть перед этим словом. как сделать так, что бы str.length выдавало полную длинну введенной строки? другими словами, введя что то вроде: qwesdfcvb 2 8 я получаю в ответ от программы только "Your string contains 9 symbols, your word is ..." почему так происходит и как с этим бороться? |
| Автор: sQu1rr 17.10.2014, 13:32 | ||||
| Извиняюсь давно не появлялся, приведу код о котором я говорил, но насколько я понял вам нельзя использовать всякие приколы типо String? Это странно так как Scanner почему то можно В любом случае, тут наглядно показано как читать переменные разных типов, именно то что я имел ввиду в своем посте
2 - это 3я буква, так что получите 11ow0rl Добавлено через 10 минут и 24 секунды Или скорее функции типо substr, тогда будет чтото типо того:
|
| Автор: Rauko 27.10.2014, 16:56 |
| в учебнике, который я использую, есть пример ввода текста с консоли до задач, но к сожалению, он представлен под старую яву и в новой(1.7 и 1.8) не компилится и не работает, Scanner искался через гугл как "вариант ввода данных с консоли в java" как я поняла, последний код - это интерпритация substr, только мне не совсем понятна запись... можно немного расшифровать, как оно работает и приминима ли такая запись в других случаях? еще один вопрос - можно ли как то вычислить длину введенной строки? сканнер обрезает все лишнее просто и возможно в итоге вычислить только длинну значащих символов еще вопрос - как можно выполнить инициализацию string, что бы в переменной было пусто? компилятор предложил загнать туда значение null, но любая выводимая строка после этого в начале дописывает null... да, вопросы от меня будут идти глупые.. |
| Автор: Rauko 27.10.2014, 18:56 | ||||
немного опадзала с правкой поста, повторю еще раз...
непонятно значение вот этой строки, вернее роли в ней "+=" - как это правильно читать? за вычисление длинны строки в сканере спасибо, пригодится(в текущей задаче не спрашивалось, но в дальнейшем может пригодиться) |
| Автор: sQu1rr 27.10.2014, 20:12 | ||
|
| Автор: Rauko 27.10.2014, 21:15 |
| другими словами, эта строка сразу инкрементирует результат с инкрементированием шага а+1 ? и это... как все таки String инициировать как ПУСТУЮ переменную? |
| Автор: sQu1rr 27.10.2014, 22:45 | ||||
возвращает символ из str по индексу А, это символ "добавляется" к строке, а ПОТОМ инкрементирует А на 1 то есть str2 + СИМВОЛ - символ прибавиться, это не называется инкрементом строки. я привел целое число лишь для демонстрации того что A += B, это A = A + B Добавлено через 47 секунд всмысле?
|