方法中的扫描器(do loop)不接受大于等于符号的情况。

问题描述 投票:0回答:1

我有一个任务,我需要用一个java程序(我用的是Eclipse)做一个轮盘赌的程序。这个程序有一个要求,它规定了 给定以下方法 标题,你必须写出相应的 定义 的int返回方法,读取、验证并返回一个要投注的数字,这个数字必须在0和36之间。(标题是 公共静态 int getNumber(Scanner stdIn)). 我遇到的问题是 while 语句,因为它不能识别 greaterless than 符号。我该如何解决这个问题?

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
java eclipse class methods java.util.scanner
1个回答
1
投票

你的程序中存在编译错误。下面是正确编译的代码。

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. In getNumber() 申报 play (用户选择的整数变量) 在do-while循环之外。这样做是为了让do-while语句的while部分能够访问该变量。
  2. 在do-while循环中使用 Scanner 对象(stdIn),从用户那里读取一个数字,并将其存储在。play. 这样就可以了。play = stdIn.nextInt() (假设用户输入的是一个数字,而不是一些会产生错误的零散文字,或者更准确的说是: 闹事).
  3. 比较 play 在do-hilestatement的while部分。你写的是什么?stdIn < 0 从根本上说是错误的,因为你是在比较一个。Scanner 对象,这不是一个数字,而是一个数字。想象一下,用一个Scanner 有另一个对象 Person. 你能不能说,乔治(一个例子。Person)大于零?显然你不能。你可以说,虽然乔治的年龄(这是一个数字)是大于零的。George.age > 0.

0
投票

这是因为你必须调用方法 nextInt() 来获取实际值。

所以在你的循环之外,声明一个 int input,在循环结束时设置,然后检查。

int input;

do {
    //... stuff

    input = stdIn.nextInt();
} while(input < 0 || input > 36);
© www.soinside.com 2019 - 2024. All rights reserved.