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;
}

}
展开
 我来答
匿名用户
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的,但是把输入但作为一个函数 就报错 是什么问题呢
追答
这个题目就是输入两个数求和,没那么复杂吧
天蝎神经侠侣
高粉答主

2015-07-01 · 关注我不会让你失望
知道大有可为答主
回答量:7533
采纳率:67%
帮助的人:725万
展开全部
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);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6f87babd4
2013-09-29 · TA获得超过1395个赞
知道小有建树答主
回答量:948
采纳率:50%
帮助的人:373万
展开全部
你说对了,是read函数写错了,修改如下:
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
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友10c6f4b
2013-09-29 · TA获得超过613个赞
知道小有建树答主
回答量:1083
采纳率:100%
帮助的人:201万
展开全部
第二种写法没错啊,你是什么编译环境?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w603257390
2013-09-29 · 超过12用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:37.6万
展开全部
我按你的代码写了一遍结果正常执行啊,,
追问
执行是可以的 就是不能AC 奇怪了 
而且我Debug 也找不到错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式