转载自https://blog.csdn.net/weixin_42292229/article/details/85220104
前言
小编由于报名了蓝桥杯Java组,所以日常做题从使用C/C++转变成使用Java。在转变的过程中,肯定会遇到很多大大小小的输入输出问题。小编打算总结下来,当做自己学习的材料,也分享给感兴趣的朋友。
文件名问题
在比赛提交的代码中,主类必须以public class Main来命名,而且不能带package语句否则会报出编译错误。
//去掉public或者不使用Main作为类名都会gg,亲测有效orz
基本的输入和输出
竞赛入门最经典的问题,莫过于A+B Problem,如果连最基本的输入输出都做不到,学了再多的算法也用不出来。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a,b;
while(cin.hasNext()){
a=cin.nextInt();
b=cin.nextInt();
System.out.println(a+b);
}
}
}
上面代码展示了最基本的输入输出框架,输入类Scanner包含在java.util类包中,首先应该把它导入。
import java.util.*;
由于java的输入需要预先创建输入类对象,所以我们一般习惯在main函数的第一句先创建这个Scanner类对象,对象命名为cin算是表达对C/C++的热爱和怀念吧hhh
Scanner cin=new Scanner(System.in);
由于题目说明“输入包括多组数据,到文件结尾为止”,类比C/C++的格式,我们很容易理解以下的这段java代码
while(cin.hasNext()) //当输入流中还有数据时
{
a=cin.nextInt();
b=cin.nextInt();
}
1.基本数据类型
这些类型在C/C++中基本上已经用烂了,一般过目一遍就会了。
int n=cin.nextInt();//读入一个整数
double d=cin.nextDouble();//读入一个双精度浮点数
long l=cin.nextLong();//读入一个长整型数
2.字符&字符串
Scanner类中并没有提供单个字符char类型的读入方法,但是我们可以先调用next()方法读取只包含一个字符的字符串,然后用charAt(0)返回0号索引处的字符,即可得到读取到单个字符。
char ch=cin.next().charAt(0);
对于字符串,java中已经封装好了字符串String类,我们也可以用char数组在进行字符串存储。
String str1=next(); //相当于C/C++中的scanf("%s",str);或cin>>str;
String str2=nextLine();//相当于C/C++中的gets(str2);或者getline(cin,str2);char s1[]=cin.next().toCharArray();//调用toCharArray()方法将其转化为char类型数组
char s2[]=cin.nextLine().toCharArray();//类比理解
但是要注意的是,我们不能像C++那样直接用数组下标去访问String类对象中的某号字符。 我们通常利用charAt(int index)方法来访问String类对象中的某号字符,或者不需要调用String类的其他方法的情况下,直接采用char类型数组来存储字符串。
3.输出
System.out.println(); //相当于C++中的cout<<endl;
System.out.print(); //相当于C++中的cout<<"";