Использование дозорного цикла
У меня возникли проблемы с упражнением, требующим, чтобы пользователь запрашивал имя и отображал его на экране, пока пользователь не введет значение часового. Я понимаю, что это контролируемый цикл, но я застрял в том факте, что имею дело с вводом имени вместо целого числа. Я пытался следовать программе в моей книге, которая объясняет, как использовать значение часового с целыми числами, но не с String "имя". Я попытался найти этот ответ и увидел что-то вроде name.equals("стоп"), если это вообще относится к этому. и посмотрел на API, и все еще не нашел это полезным. Я хотел бы видеть, как это применяется в целом.
Примечание: вот что я сделал до сих пор, и я хочу знать, насколько я далеко.
import java.util.*;
public class SentinelControlledLoop {
static Scanner console = new Scanner(System.in);
static final int SENTINEL = #;
public static void main (String[] args) {
String name;
System.out.println("Enter a name " + "ending with " + SENTINEL);
String name = reader.next();
while (!name.equals(“stop”)) {
name = reader.next();
}
3 ответа
упражнение, предлагающее пользователю ввести имя и отображать это имя на экране до тех пор, пока пользователь не введет сигнальное значение.
Я ожидал увидеть что-то более похожее на:
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
String SENTINEL = "stop";
String name;
do {
System.out.print("Enter a name ('" + SENTINEL + "' to quit): ");
name = reader.nextLine();
if (!name.equals(SENTINEL)) {
System.out.println(name);
}
} while (!name.equals(SENTINEL));
System.out.println("Goodbye!");
}
do {
name = reader.next();
} while (name.lastIndexOf(SENTINEL) == -1);
Я предполагаю, что имя не может содержать стража в нем. В другом случае поменяй == -1
в
!= length(name) - 1
PS. Вы декларируете String name
дважды.
PS2. Еще лучшее состояние:
while (!name.endsWith(String.valueOf(SENTINEL));
Использование часового цикла for:
В контуре с дозорным управлением часть изменений зависит от данных пользователя. Неловко делать это внутри оператора for. Таким образом, часть изменения опускается в инструкции for и помещается в удобное место.
import java.util.Scanner;
class EvalSqrt
{
public static void main (String[] args )
{
Scanner scan = new Scanner( System.in );
double x;
System.out.print("Enter a value for x or -1 to exit: ") ;
x = scan.nextDouble();
for ( ; x >= 0.0 ; )
{
System.out.println( "Square root of " + x + " is " + Math.sqrt( x ) );
System.out.print("Enter a value for x or -1 to exit: ") ;
x = scan.nextDouble();
}
}
}
Подробнее: https://chortle.ccsu.edu/java5/Notes/chap41/ch41_13.html.