java 键盘输入函数
北大ACM1000写了两个程序main类中的AC但是Main2提示RuntimeError,估计就是read函数写的不对,哪位大神赐教一下importjava.util....
北大ACM1000 写了两个程序 main类中的AC 但是Main2提示Runtime Error,估计就是read 函数写的不对,哪位大神赐教一下
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception{
int a,b,sum;
Scanner sc=new Scanner(System.in);
a=sc.nextInt();
b=sc.nextInt();
sum=getSum(a,b);
writeNum(sum);
}
private static void writeNum(int a) {
System.out.println(a);
}
private static int getSum(int a, int b) {
int c=a+b;
return c ;
}
}
import java.util.Scanner;
public class Main2 {
/**
* @param args
*/
public static void main(String[] args) {
int a,b,sum;
a=readNum();
b=readNum();
sum=getSum(a,b);
writeNum(sum);
}
private static void writeNum(int a) {
System.out.println(a);
}
private static int getSum(int a, int b) {
int c=a+b;
return c ;
}
private static int readNum() {
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
return x;
}
} 展开
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception{
int a,b,sum;
Scanner sc=new Scanner(System.in);
a=sc.nextInt();
b=sc.nextInt();
sum=getSum(a,b);
writeNum(sum);
}
private static void writeNum(int a) {
System.out.println(a);
}
private static int getSum(int a, int b) {
int c=a+b;
return c ;
}
}
import java.util.Scanner;
public class Main2 {
/**
* @param args
*/
public static void main(String[] args) {
int a,b,sum;
a=readNum();
b=readNum();
sum=getSum(a,b);
writeNum(sum);
}
private static void writeNum(int a) {
System.out.println(a);
}
private static int getSum(int a, int b) {
int c=a+b;
return c ;
}
private static int readNum() {
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
return x;
}
} 展开
5个回答
2013-09-29
展开全部
请楼主参考一下我的代码,祝你学习愉快
import java.io.*;
import java.util.Scanner; //导入Scanner对象;
public class CompareTwoNumbers{
public static void main(String args[]){
Double number1,number2;
System.out.print("请输入第一个数:");
Scanner scanner = new Scanner(System.in);//实例化一个Scanner对象;
number1 = scanner.nextDouble();//从键盘输入一个实数赋值给number1;
System.out.print("请输入第二个数:");
number2 = scanner.nextDouble();//从键盘输入一个实数赋值给number1;
if(number1<number2)
System.out.println("较大的数:"+number2);
else if (number1>number2) System.out.println("较大的数:"+number1);
else System.out.println("两个数相同");
}
}
追问
按照你这样写是可以AC的,但是把输入但作为一个函数 就报错 是什么问题呢
追答
这个题目就是输入两个数求和,没那么复杂吧
展开全部
import java.util.Scanner;//导入Scanner类,用它来接收输入的字符或字符串
public class ScannerTest {
public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner reader=new Scanner(System.in);//构造扫描器
System.out.print("输入任意字符 :");
String s=reader.nextLine();//
获得输入的字符,并赋给字符串型变量s
System.out.println("您输入的字符为:"+s);
}
}
public class ScannerTest {
public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner reader=new Scanner(System.in);//构造扫描器
System.out.print("输入任意字符 :");
String s=reader.nextLine();//
获得输入的字符,并赋给字符串型变量s
System.out.println("您输入的字符为:"+s);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说对了,是read函数写错了,修改如下:
private static Scanner sc = new Scanner(System.in);
private static int readNum() {
int x = sc.nextInt();
return x;
}
你每调用一次readNum(),它都创建一个Scanner,而且还用同一个System.in流
private static Scanner sc = new Scanner(System.in);
private static int readNum() {
int x = sc.nextInt();
return x;
}
你每调用一次readNum(),它都创建一个Scanner,而且还用同一个System.in流
追问
3Q!!
但是我不是很懂你的意思哦,Scanner对象sc为局部变量,函数运行完不是应该,自动销毁吗?
追答
System.in流 是以回车键为结束符的,也就是敲了回车键后,就把数据 发到缓冲区。
假如输入的数据是 : 12 (回车) 23 (回车)那么可以得到正确的答案。
但如果输入的数据是 : 12 (空格) 23 (回车)那么不能得到正确的答案。
因为你每new 一次Scanner,将会把缓冲区里的内容读取出来。在 12 (空格) 23 (回车)这种情况下,Scanner 里面有了12 23 两个数,但你调用nextInt();函数时,只能获取12这个数。你下一次new Scanner 的时候 ,23这个数永远读不到了。它在死等你输入数字,你又不输入,就Runtime Error
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二种写法没错啊,你是什么编译环境?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我按你的代码写了一遍结果正常执行啊,,
追问
执行是可以的 就是不能AC 奇怪了
而且我Debug 也找不到错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询