在这里做一些功课(第二次任务,仍然非常绿......)。对象是读取数字x
和y
并提供数百个位置的数字。
为此,我需要使用int我假设,因为要求是利用返回值的方法。
我刚刚开始对此进行编码,但是我已经遇到了编译错误:
线程“main”中的异常java.lang.Error:未解析的编译 问题: 参数anum的非法修饰符;只有决赛是允许的 参数bnum的非法修饰符;只有决赛是允许的 类型不匹配:无法在Hundreds.main(Hundreds.java:6)从String转换为int
我哪里错了?
以下是目前的代码:
import java.util.Scanner;
public class Hundreds {
public static void main (String [] args) {
Scanner input = new Scanner(System.in);
private int anum,bnum;
System.out.println("Hello, for this assignment we are going to require the user to enter two distinct numbers of their choosing");
System.out.println("Please ensure the numbers are between 100 and 9999");
System.out.println("\n");
System.out.println("Please enter your first Number: ");
anum = input.nextLine();
答案 0 :(得分:2)
由于这些变量是本地变量,因此您无法将可见范围设置为私有,公共,受保护。
如果您希望它们的范围更大,请将它们移出主函数。
答案 1 :(得分:2)
anum = Integer.valueOf(input.nextLine());
答案 2 :(得分:1)
您还可以测试下一个元素是否为int,然后如果不是则向用户提供反馈:
if(input.hasNextInt()) {
anum = input.nextInt();
}
答案 3 :(得分:0)
创建anum字符串而不是int。 nextLine返回一个字符串。在main中定义字符串时不要使用private。
答案 4 :(得分:0)
请改为尝试:
anum = input.nextInt();
如果您输入一个非整数(尝试查看有趣的堆栈跟踪),这仍然会出错,但会让您超越当前的位置。
答案 5 :(得分:0)
(i)删除无效修饰符。
(ii)将字符串转换为整数。因此,请使用anum=input.nextInt()
而不是anum = input.nextLine()