首页 > 解决方案 > 方法(循环)中的扫描仪不接受大于/小于符号

问题描述

我有一个任务,我需要使用 java 程序(我使用 Eclipse)制作轮盘赌程序。该程序有一个要求,即:给定以下方法标题,您必须为一个 int 返回方法编写相应的定义,该方法读取、验证并返回一个要下注的数字,该数字必须在 0 到 36 之间。(标题是公共静态 int getNumber(Scanner stdIn) )。我遇到的问题是 while 语句,因为它不能识别大于/小于符号。我该如何解决这个问题?

import java.util.Scanner;
public class Program08 
{
    public static void main(String[]args)
    {
    welcome();
    Scanner stdIn = new Scanner(System.in);
    int number;
    number = getNumber(stdIn);

    }
public static void welcome()
{
    System.out.println("Welcome to Roulette!");
    System.out.println("Number bets payout: 35:1");
}
public static int getNumber(Scanner stdIn)
{
    do
    {
        //int play;
        System.out.println("Enter the number to bet on [0-36]: ");
        //play = stdIn.nextInt;
    }
    while (stdIn<0 || stdIn>36);

}
}//end of program

标签: javaeclipseclassmethodsjava.util.scanner

解决方案


您的程序中有编译错误。这是正确编译的代码,

import java.util.*;

public class Program08{

    public static void main(String[] args){
            welcome();
        Scanner stdIn = new Scanner(System.in);
        int number;
        number = getNumber(stdIn);
    }

    public static void welcome(){
      System.out.println("Welcome to Roulette!");
      System.out.println("Number bets payout: 35:1");
    }

    public static int getNumber(Scanner stdIn){
        int play = 0;
        do{
          System.out.println("Enter the number to bet on [0-36]: ");
          play = stdIn.nextInt();
      } while (play < 0 || play > 36);
        return play;
    }
}

修复了什么:

  1. 在do-while 循环之外getNumber()声明play(将存储用户选择的整数变量)。这样做是为了让 do-while 语句的 while 部分可以访问该变量。
  2. 使用Scanner对象 ( stdIn) 从用户那里读取一个数字并将其存储在play. 这样做:(play = stdIn.nextInt()假设用户将输入一个数字而不是一些会产生错误或更准确地说引发异常的任意文本)。
  3. 比较playdo-while 语句的 while 部分中的值。您所写stdIn < 0的内容从根本上是错误的,因为您将一个Scanner不是数字的对象与数字进行比较。想象一下,代替 a Scanner有另一个对象,比如说 a Person。你能说 George( 的一个实例Person)大于零吗?显然你不能。你可以说乔治的年龄(这是一个数字)大于零,George.age > 0.

推荐阅读