java 使用哨兵控制回路

yxyvkwin  于 2023-02-28  发布在  Java
关注(0)|答案(3)|浏览(164)

我在练习时遇到了麻烦,要求用户提示一个名称并在屏幕上回显该名称,直到用户输入一个sentinel值。我知道这是一个sentinel控制的循环,但我坚持这样一个事实,即我正在处理输入一个名称,而不是一个整数。我试图按照我的书中的一个程序,它只解释了如何使用整数的sentinel值,而不是字符串“name”。我试着查找这个答案,看到类似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();
        }
bd1hkmkf

bd1hkmkf1#

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

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

!= length(name) - 1

另外,您声明了两次String name
PS2.更好的条件:

while (!name.endsWith(String.valueOf(SENTINEL));
unguejic

unguejic2#

使用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

zpjtge22

zpjtge223#

要求用户提示名称并将该名称回显到屏幕直到用户输入标记值的练习。
我希望看到更像这样的东西:

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!");
  }

相关问题