1

我在要求用户提示名称并将该名称回显到屏幕上直到用户输入哨兵值的练习时遇到问题。我知道这是一个哨兵控制的循环,但我坚持这样一个事实,即我正在处理输入名称而不是整数。我试图遵循我书中的一个程序,它只解释了如何使用整数而不是字符串“名称”的哨兵值。我尝试查找此答案并看到类似 name.equals("stop") 的内容,如果它甚至适用于此。并在 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();
        }
4

3 回答 3

0
do {
    name = reader.next();
} while (name.lastIndexOf(SENTINEL) == -1);

我假设名称中不能包含哨兵。在其他情况下,更改== -1

!= length(name) - 1

PS。你声明String name了两次。

PS2。更好的条件:

while (!name.endsWith(String.valueOf(SENTINEL));
于 2012-11-29T22:28:21.037 回答
0

哨兵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

于 2020-04-26T08:05:14.463 回答
0

要求用户提示一个名称并将该名称回显到屏幕上的练习,直到用户输入一个标记值。

我希望看到更多类似的东西:

  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!");
  } 
于 2022-01-26T20:27:00.260 回答