我在练习时遇到问题,要求让用户提示姓名并将该名称回显到屏幕,直到用户输入标记值。我知道这是一个哨兵控制的循环,但我坚持认为我正在处理输入名称而不是整数。我试图按照我的书中的程序来解释如何使用整数而不是字符串“name”的sentinel值。我尝试查找这个答案,看到类似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();
}
答案 0 :(得分:0)
do {
name = reader.next();
} while (name.lastIndexOf(SENTINEL) == -1);
我认为该名称不能包含其中的标记。在其他情况下,请将== -1
更改为
!= length(name) - 1
PS。您宣布String name
两次。
PS2。更好的条件:
while (!name.endsWith(String.valueOf(SENTINEL));
答案 1 :(得分:0)
将哨兵用于循环:
在前哨控制的循环中,更改部分取决于来自用户的数据。在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