java - 方法(循环)中的扫描仪不接受大于/小于符号
问题描述
我有一个任务,我需要使用 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
解决方案
您的程序中有编译错误。这是正确编译的代码,
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;
}
}
修复了什么:
- 在do-while 循环之外
getNumber()
声明play
(将存储用户选择的整数变量)。这样做是为了让 do-while 语句的 while 部分可以访问该变量。 - 使用
Scanner
对象 (stdIn
) 从用户那里读取一个数字并将其存储在play
. 这样做:(play = stdIn.nextInt()
假设用户将输入一个数字而不是一些会产生错误或更准确地说引发异常的任意文本)。 - 比较
play
do-while 语句的 while 部分中的值。您所写stdIn < 0
的内容从根本上是错误的,因为您将一个Scanner
不是数字的对象与数字进行比较。想象一下,代替 aScanner
有另一个对象,比如说 aPerson
。你能说 George( 的一个实例Person
)大于零吗?显然你不能。你可以说乔治的年龄(这是一个数字)大于零,George.age > 0
.
推荐阅读
- google-cloud-firestore - Firestore 安全规则和 Api Key
- python - 当我很确定某个值不在索引中时,Pandas .loc 说它是
- javascript - 如何通过动态构建多维数组进行搜索/过滤/类型匹配
- php - 无法使用 post 方法发送数组并将多个项目查询到 DB
- excel - 根据单元格值选择特定列
- arrays - 使用索引返回多个字符串值,匹配多个条件
- c - 连接两个捕获组
- qt - 为什么我不能从 qt creator 调试 qml?
- javascript - 为什么我的 jQuery 动画功能不起作用?
- exception - Haxe 未捕获的全局异常处理程序