Scanner使用时出现问题,求助大神
import java.util.Scanner;public class Example2_2 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int sum=1;
while(s.hasNextInt)
sum=sum*s.nextInt();
System.out.print("这些整数的乘积是:"+sum);
s.close();
}
}
//这是代码 --------------------编程问答-------------------- Exception in thread "main" java.lang.Error: 无法解析的编译问题:
无法解析 hasNextInt,或者它不是字段
at Example2_2.main(Example2_2.java:9)
//这是错误提示 --------------------编程问答--------------------
import java.util.Scanner;--------------------编程问答--------------------
public class Example2_2
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int sum = 1;
while (s.hasNextInt())
// 注意这里
sum = sum * s.nextInt();
System.out.print("这些整数的乘积是:" + sum);
s.close();
}
}
注释跑到下一行了,应该是s.hasNextInt(),调用方法时要有个小括号的。 --------------------编程问答-------------------- hasNextInt是Scanner的方法,而非属性,应该为s.hasNextInt()。建议楼主下个java API,快速查询各个类用途,和包含的属性、方法。 --------------------编程问答-------------------- hasNextInt() --------------------编程问答-------------------- 明显是方法名后面要有括号啊 --------------------编程问答-------------------- 就是这个问题 --------------------编程问答-------------------- s.hasNextInt() --------------------编程问答-------------------- 上面说的都很好了,我就围观下吧!方法当然是有括号的了 --------------------编程问答--------------------
说的在理 --------------------编程问答-------------------- hasNextInt后面少括号了 --------------------编程问答-------------------- 这样写就对了
import java.util.Scanner;
public class aa {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int sum=1;
while(s.hasNextInt())
sum=sum*s.nextInt();
System.out.print("这些整数的乘积是:"+sum);
s.close();
}
}
Scanner这个很好用,建议把它的一些方法学精点 --------------------编程问答-------------------- public final class Scannerextends Objectimplements Iterator<String>一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close(); 输出为:
1
2
red
blue 以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close(); 扫描器所使用的默认空白分隔符通过 Character.isWhitespace 来识别。不管以前是否更改,reset() 方法将把扫描器分隔符的值重置为默认空白分隔符。
这是正确的代码:
import java.util.Scanner;
public class Example2_2 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int sum=1;
while(s.hasNextInt()) //你的代码这儿有错误
{
int m=s.nextInt();
sum +=m;
}
System.out.print("这些整数的乘积是:"+sum);
s.close();
}
}
--------------------编程问答-------------------- 同上同上 --------------------编程问答--------------------
补充:Java , Java SE