首先我们需要很明确的一点是在类vjude这种OJ提交系统中一般都是需要循环输入的,即他会用多行输入来去测试你的程序是否正确。
这是A题:题目中提供了问题,输入格式要求,输出格式要求,输入样例,输出样例,需要注意的就是输入样例是从控制台输入的,即要想接收这两个参数,必须从控制台输入。
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
循环输入的话就是这样的格式:
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt())//hasNextIn()方法检测
{
//逻辑代码
}
//A题答案规范
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt())
{
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(a+b);
}
sc.close();
}
}
看一下B题的答案:
import java.util.Scanner;
public class Main {
public static void main(String []args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextDouble())//注意是hasNextDouble()
{
double a = sc.nextDouble();
System.out.printf("%.2f%n",Math.abs(a));//注意一下java这种Printf格式化输出
}
}
}
这两道题用到的常见方法
Scanner的常用方法
hasNext() //只能返回true或false,判断有无下一个字符串的标记
举个例子,对于a b c,现在处理到a,那么下一个标记就是b。
hasNextDouble() 只能返回true或false,判断有无下一个实数的标记
next() //返回类型为String(字符串),返回下一个标记。不会读取回车换行。
hasNextInt() //返回true或false,看有无下一个整型字符串标记。
nextInt() //返回类型int,将下一个整型字符串标记转化为int型返回。
nextBoolean() //返回类型为boolean,可以处理字符串true或者false,
nextDouble() //返回类型为double,可以处理字符串如1 2.3 -1.3等。
nextLine() //返回类型为String(字符串对象),返回一整行。会读取回车换行符。
printf格式化输出方法
有的时候我们不想要直接println,这样输出来之后不是我们想要的格式,这时候就需要用到了Printf格式化输出方法
比如上一道题中
System.out.printf("%.2f%n",Math.abs(a));
这个意思就是把a这个实数取绝对值后然后保留小数点后两位换行输出。
这个就是说明Printf是System.out类中的一个方法,他的第一个参数是我要输出的格式,第二个是数据内容。
在这条语句中%.2f对应着Math.abs(a);
现在给出常见的格式参数
%n 换行 相当于 \n
%c 单个字符
%d 十进制整数
%6d 代表宽度为6的整数
%06d 代表宽度为6的整数,不够左边添加0
%u 无符号十进制数
%f 十进制浮点数
%.2f是保留小数点后两位
%5.2f //"5.2"中的5表示输出的长度,2表示小数点后的数。(右对齐)
%-5.2f //"-"表示输出的数左对齐(默认为右对齐)
%o 八进制数
%x 十六进制数
%s 字符串
%% 输出百分号
需要注意的地方是在OJ模式下一般情况只存在一个Main类,如果想要多个类的话也可以,其他类不能加Public修饰,即class we{}
版权声明:本文为wanghuiqiang1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。