Строка, которую вы вводите в Java
Вы хотите, чтобы экран показал слово, которое вы вводите после старта программы, слово, которого нет в файле. На прошлой странице слово стояло в кавычках на строке хранения, поэтому другой экран означал правку Mint.java. На этой странице в файле нет leaf вообще. Он создаёт имя, plant, и затем ждёт. Вы вводите leaf и нажимаете Enter. Пишущая строка использует голое имя, и программа пишет leaf. Вы не устанавливаете Java заново. Вы не добавляете заметку и не учите второй способ закончить строку. Вы уже знаете, что имя может хранить буквы и что println пишет эти буквы. Новая работа — наполнить это имя строкой, которую вы вводите.
Файл ждёт одну введённую строку
Откройте Mint.java. Имя файла остаётся Mint.java, потому что public class Mint по-прежнему имя файла. Эта страница не переименовывает файл и не меняет public class Mint. Первая строка файла, над public class Mint, — import java.util.Scanner;. Эта строка позволяет файлу использовать Scanner. Это не пишущая строка. Scanner — не буква для экрана. Точка с запятой заканчивает строку импорта. Оставьте под ней пустую строку, затем тот же public class Mint, который у вас уже есть. В этом файле по-прежнему нет строки package. Импорт — первая строка, не строка внутри main.
Внутри main первая новая строка делает средство чтения: Scanner reader = new Scanner(System.in);. Scanner говорит, что за вещь reader. reader — имя, и оно начинается с маленькой r. Знак = хранит это средство в этом имени. new Scanner(System.in) делает средство и присоединяет его к System.in. System.in — место, откуда читаются буквы, которые вы вводите. System.out, которое вы уже используете на пишущей строке, — экран. Это не одно и то же. Точка с запятой заканчивает эту строку. Эта строка не пишет экран и не ждёт, пока вы введёте. Она только делает reader.
Следующая строка наполняет имя, которое вы уже знаете с прошлой страницы: String plant = reader.nextLine();. String по-прежнему значит, что это имя хранит буквы. plant по-прежнему начинается с маленькой p. Знак = по-прежнему хранит буквы в этом имени. Новое — правая сторона. У reader.nextLine() нет кавычек. На этой строке нет leaf. Строка просит у reader одну введённую строку. Программа ждёт там, пока вы не нажмёте Enter. Когда вы нажимаете Enter, nextLine хранит буквы, которые вы ввели до этого Enter. Саму клавишу Enter он не хранит. Затем строка заканчивается на точке с запятой. Хранение по-прежнему не письмо. Программа ещё не написала свою строку.
Пишущая строка остаётся голым именем, в той же форме, что в файле, который вы оставили на прошлой странице: System.out.println(plant);. Без кавычек. Java читает имя plant, пишет буквы, которые это имя хранит, и заканчивает строку. Эти буквы — то, что nextLine только что сохранил. Если вы ввели leaf, программа пишет leaf. Если вы ввели stem, программа пишет stem. Между двумя запусками файл не менялся. Сохраните файл.
Файл, который вы оставляете
Сохраните это как Mint.java. Это файл, который оставляет эта страница. Слово, которое вы введёте, не в файле. Поищите в файле буквы l, e, a и f. Их там нет. Средство чтения зовут reader. Сохранённую строку зовут plant. Пишущая строка использует plant и не содержит кавычек.
import java.util.Scanner;
public class Mint {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
String plant = reader.nextLine();
System.out.println(plant);
}
}
Читайте файл сверху и решите, что может дойти до экрана. import java.util.Scanner; только позволяет файлу использовать Scanner. public class Mint называет файл. public static void main(String[] args) — место, с которого Java начинает. Ни одно из этих слов не является буквой для экрана. Слово String в строке main — не то String, которое создаёт plant. Scanner reader = new Scanner(System.in); делает средство reader. Оно ничего не пишет. String plant = reader.nextLine(); хранит одну введённую строку в plant. Само по себе оно ничего не пишет. System.out.println(plant); — единственная пишущая строка. Она пишет сохранённые буквы и заканчивает строку. Имя plant не пишется. Имя reader не пишется. System не пишется. Точка с запятой не пишется.
Что вы вводите и что пишет программа
В папке, где лежит этот Mint.java, введите javac Mint.java. Когда файл в порядке, эта команда не пишет ни одной строки. Строка импорта и наличие reader не заставляют javac писать строку и не заставляют его ошибаться. Затем введите java Mint. Не пишите .java после java. Эти же две команды вы вводите в Windows и в macOS. Эта страница не цитирует знак, который оболочка показывает перед командой. Эти знаки различаются, и они не строка программы.
После java Mint программа ждёт на reader.nextLine(). Она не закончилась и не написала leaf, потому что вы ещё не дали ей строку. Курсор сидит на свежей строке. Введите буквы l, e, a и f. Терминал показывает эти буквы, пока вы нажимаете клавиши. Это показ — терминал повторяет ваши клавиши. Это не System.out.println. Затем нажмите Enter.
Enter кончает ожидание. nextLine хранит слово leaf в plant и не хранит Enter. Потом println пишет leaf и заканчивает строку. Вы видите leaf, и под ним leaf ещё раз. Первое leaf — клавиши, которые показал терминал. Второе leaf — программа. У строки программы нет кавычек. Четыре буквы, затем строка заканчивается. Программа заканчивается после этой пишущей строки. Если вы хотите судить только о строке программы, смотрите строку, которая появляется после нажатия Enter.
Если строка программы — plant, в пишущей строке кавычки вокруг plant. В файле, который вы оставляете, их нет. Если строка программы — mint, пишущая строка по-прежнему System.out.println("mint");, или файл по-прежнему хранит слово в кавычках с более ранней страницы. Если java Mint сразу пишет leaf и никогда не ждёт, файл по-прежнему хранит слово в кавычках, например String plant = "leaf";, и не использует nextLine. Поищите кавычки вокруг leaf. В файле, который вы оставляете, их нет. Не устанавливайте Java заново из-за того, что экран показывает не то слово.
Заглавные буквы копируются так, как вы их вводите. Если вы вводите Leaf с большой L и нажимаете Enter, строка программы — Leaf. В файле этих букв по-прежнему нет. Пустой Enter — тоже настоящая строка. Нажмите Enter, не вводя букв. nextLine не хранит в plant ни одной буквы. println пишет строку без букв. Программа выполнилась. Ожидание кончилось, потому что вы нажали Enter. Файл, который вы оставляете, — тот, который вы пробуете со словом leaf, четыре маленькие буквы.
Пробел остаётся в строке
nextLine читает до Enter, не до пробела. Введите leaf, затем пробел, затем stem, затем Enter. Буквы, сохранённые в plant, — это leaf, пробел и stem. System.out.println(plant) пишет leaf stem. Пробел — сохранённый знак, так же как на прошлой странице сохранялся пробел внутри кавычек. Эта страница не обрезает строку на пробеле. Файл, который вы оставляете, по-прежнему читает одну строку. Когда вам нужен пробел на экране, вы меняете только то, что вводите, не файл.
Две введённые строки, два Enter
Один reader может взять вторую строку. Под первой пишущей строкой сохраните новую строку в том же имени, затем напишите имя ещё раз. Новая строка хранения — plant = reader.nextLine();. Она не начинается с String. plant уже есть, поэтому эта строка только заменяет буквы, которые имя хранит. Следующая пишущая строка снова System.out.println(plant);. Теперь программа ждёт дважды. Каждое nextLine ждёт свой Enter.
Это второй файл. Это не файл, который вы оставляете. Файл, который вы оставляете, ждёт один раз и пишет один раз. Сохраните этот второй файл как Mint.java, когда хотите две введённые строки, а потом верните одно nextLine и один println.
import java.util.Scanner;
public class Mint {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
String plant = reader.nextLine();
System.out.println(plant);
plant = reader.nextLine();
System.out.println(plant);
}
}
Введите javac Mint.java. Файл в порядке, поэтому javac не пишет ни одной строки. Второй строке хранения можно обойтись без String, и это отсутствие не заставляет javac ошибаться. Затем введите java Mint. Программа ждёт. Введите leaf и нажмите Enter. Терминал показывает leaf, и программа пишет leaf под ним. Программа ждёт снова. Она не закончилась. Введите stem и нажмите Enter. Терминал показывает stem, и программа пишет stem под ним. Строки программы — leaf, затем stem. Буквы, которые терминал показал с клавиш, сидят над каждой из этих строк. Если обе строки программы говорят leaf, второе nextLine не выполнилось, или вы оба раза ввели leaf. Если программа пишет stem до того, как вы ввели вторую строку, второй println не стоит под вторым nextLine. Экран следует порядку строк в файле, и каждое ожидание следует за тем nextLine, который ещё не получил Enter.
Не пишите String второй раз для того же имени. String plant = reader.nextLine(); под строкой, которая уже создала plant, — другая ошибка. Эта строка пытается создать plant ещё раз. javac пишет ошибку и не остаётся тихим. Точные слова этой ошибки вам не нужны. Полезный факт: javac написал строку, поэтому java Mint вы ещё не вводите. Сотрите второй String и оставьте plant = reader.nextLine();. Имя создаётся один раз. Поздние строки только меняют буквы, которые оно хранит. В файле, который вы оставляете, второго nextLine нет вовсе. После того как вы увидели leaf, а затем stem, верните файл с одной строкой.
Строка импорта стоит над public class
Файл знает Scanner только когда строка импорта на месте. Если удалить import java.util.Scanner; и оставить остальное из файла, который вы оставляете, javac пишет ошибку. Он не остаётся тихим. Экрана для чтения нет, потому что вы не вводите java Mint, пока javac пишет ошибку. Точные слова ошибки вам не нужны. Исправление — снова поставить import java.util.Scanner; первой строкой, над public class Mint, с точкой с запятой. Сохраните, введите javac Mint.java ещё раз и ждите, пока javac не напишет ни одной строки.
В этом третьем файле нет импорта. Это не файл, который вы оставляете. Сохраните его только до того, как javac напишет ошибку, затем верните строку импорта.
public class Mint {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
String plant = reader.nextLine();
System.out.println(plant);
}
}
Строка импорта также ошибочна, если поставить её внутри main, под открывающей скобкой, или если поставить её под public class. Java читает импорт над public class, не как шаг внутри main. Верните её на первую строку. Пропущенная точка с запятой на этой строке — та же неудача: javac пишет ошибку, и вы не запускаете java Mint. В файле, который вы оставляете, точка с запятой есть.
System.in — единственное место, к которому эта страница присоединяет reader. Scanner reader = new Scanner(System.out); просит средство чтения на экране. System.out — то, куда пишет println. Это не место, откуда читаются введённые буквы. javac пишет ошибку. Он не остаётся тихим. Не вводите java Mint. На этой одной строке замените System.out на System.in. Пишущая строка сохраняет System.out, потому что пишущая строка — экран. Строка reader сохраняет System.in, потому что строка reader — клавиатура. Перепутать их — и есть ошибка.
Этот четвёртый файл присоединяет средство к экрану. Это не файл, который вы оставляете. Сохраните его только до того, как javac напишет ошибку, затем замените out на in.
public class Mint {
public static void main(String[] args) {
Scanner reader = new Scanner(System.out);
String plant = reader.nextLine();
System.out.println(plant);
}
}
reader должен существовать сначала
Java читает файл сверху. Строка, которая делает reader, должна стоять выше строки, которая использует reader. Если сначала стоит String plant = reader.nextLine();, и только потом Scanner reader = new Scanner(System.in);, строка хранения использует имя reader до того, как reader существует. javac пишет ошибку. Он не остаётся тихим. Это то же правило порядка, что на прошлой странице, когда plant использовался до String plant. Исправление — перенести строку Scanner выше строки nextLine. Имя не используется в строке более ранней, чем строка, которая его создаёт.
В этом пятом файле порядок сломан. Это не файл, который вы оставляете. Сохраните его только до того, как javac напишет ошибку, затем верните строку Scanner над nextLine. Строка импорта по-прежнему нужна в файле, который вы действительно запускаете. Этот сломанный файл сохраняет импорт, чтобы единственной новой ошибкой был порядок.
import java.util.Scanner;
public class Mint {
public static void main(String[] args) {
String plant = reader.nextLine();
Scanner reader = new Scanner(System.in);
System.out.println(plant);
}
}
Введите javac Mint.java. javac пишет ошибку. Не вводите java Mint. Поставьте Scanner reader = new Scanner(System.in); над String plant = reader.nextLine();. Сохраните. Введите javac Mint.java ещё раз. Теперь javac не пишет ни одной строки. Затем java Mint ждёт. Введите leaf, нажмите Enter, и программа пишет leaf.
Кавычки на пишущей строке по-прежнему значат то же, что на прошлой странице. После настоящего nextLine, если пишущая строка — System.out.println("plant");, вы можете ввести leaf и нажать Enter, и строка программы всё равно plant. Знаки отмечают буквы p, l, a, n и t. Java не ищет имя. Строка, которую вы ввели, сохранилась в plant и не была написана. Исправление — голое имя, System.out.println(plant);. В файле, который вы оставляете, это голое имя уже есть. Не ставьте кавычки вокруг leaf и на строке хранения. String plant = "leaf"; сохранил бы leaf из самого файла и никогда не ждал бы. Эта страница оставляет nextLine на строке хранения и оставляет пишущую строку голой.
Теперь вы можете запустить Mint.java, подождать, ввести строку, нажать Enter и увидеть, что программа пишет эту строку. import java.util.Scanner; стоит над public class. Scanner reader = new Scanner(System.in); делает средство на клавиатуре. String plant = reader.nextLine(); хранит строку, без Enter. System.out.println(plant); пишет её и заканчивает строку. Более поздний plant = reader.nextLine(); ждёт второй Enter. Импорт, System.in и то, что reader существует до использования, держат javac тихим. Следующая страница оставляет клавиатуру. Она смотрит на виды значений, которые имя может хранить, когда вы пишете эти значения в файле, и начинает с чисел, не со строки, которую вы вводите.
Экран — это строка, которую вы ввели
Файл, который вы оставляете, не содержит leaf. Вы вводите leaf после java Mint и нажимаете Enter. Терминал показывает этот ввод. Затем программа пишет leaf на следующей строке. Пробел, который вы вводите, входит в эту строку. Второе nextLine — это второй Enter, и его нет в файле, который вы оставляете.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху