Java中int、String的类型转换
int->String
- 加上""
- Integer.toString()
String->int
- Integer.parseInt();
String[] str=scanner.nextLine().split(" ");//是字符串数组而不是字符数组
总结:
length——数组的属性;
length()——String的方法;
size()——集合的方法;
nums2=nums1;//数组之间赋值,只是改变了引用而已
\s代表一个空白字符 正则表达是中的\s应该是匹配一个空白字符
Scanner.useDelimiter( )
由于Scanner对象将首先跳过输入流开头的所有空白分隔符,然后对输入流中的信息进行检查,直到遇到空白分隔符为止;因此输入数据:this is a test;空白后面的字符:is a test不会显示输出来。那如何将含有空格的数据输出呢?
这时就需要用Scanner.useDelimiter( )方法,可以将分隔符号修改为"回车",或者其他字符。
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数,循环可以用%运算
打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
......
public class Programme {
public static void main(String[] args) {
int[][] nums=new int[10][10];
//数组第一列全为1
for(int i=0;i<10;i++){
nums[i][0]=1;
}
//将杨辉三角形的数全部算出来
for(int i=1;i<10;i++){
for(int j=1;j<i+1;j++){
nums[i][j]=nums[i-1][j]+nums[i-1][j-1];
}
}
//分情况打印输出
for(int i=0;i<10;i++){
for(int j=0;j<10-i-1;j++){
System.out.print(" ");
}
for(int j=0;j<10;j++){
if(nums[i][j]==0){
break;
}
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
}
}
【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
public class Programme {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入人数:");
int n=scanner.nextInt();
boolean bool[]=new boolean[n];
//count控制圈内人数,index控制圈的循环,c控制报数的次数
int count=n,index=0,c=0;
while(count>1){
for(int i=index;i<n;i++){
if(bool[i]==false){
c++;
}
if(c==3){//报数满三次,c重置为0
bool[i]=true;
count--;//表示人少了一个
c=0;
}
}
index=0;//报满一圈置为0
}
for(int i=0;i<n;i++){
if(!bool[i]){
System.out.println("最后留下的是原来的第"+(i+1)+"位");
}
}
scanner.close();
}
}
高精度除以低精度=高精度
string1.compareTo(string2);
如果返回1,String1>String2
如果返回-1,String1<String2
如果返回0,String1=String2
持续输入
while (input%2!=0) {
System.out.println("你输入的不是偶数,请重新输入:");
input=scanner.nextInt();
}
文本文件换行符
- windows下的文本文件换行符:\r\n
- linux/unix下的文本文件换行符:\r
- Mac下的文本文件换行符:\n
输入输出流
InputStream、OutputStream
处理字节流的抽象类
InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等.
OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等.
InputStreamReader、OutputStreamWriter
处理字符流的抽象类
InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.
OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流.
BufferedReader BufferedWriter
BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine()读取一个文本行,
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
BufferedWriter 由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine()使用平台自己的行分隔符(回车换行),
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
【程序50】
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。最后这题涉及文件存储,输入输出流
public class Programme {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生信息:");
//学生信息的格式:学号 姓名 成绩1,成绩2,成绩3
String[][] str=new String[5][3];
for(int i=0;i<5;i++){
String s=scanner.nextLine();
str[i]=s.split(" ");
}
int score[][]=new int[5][3];
for(int i=0;i<5;i++){
int j=0;
for(String s:str[i][2].split(",")){
score[i][j++]=Integer.parseInt(s);
}
}
try {
FileWriter writer=new FileWriter("stud2.txt");
BufferedWriter buffer=new BufferedWriter(writer);
for(int i=0;i<5;i++){
String str2=str[i][0]+" "+str[i][1]+" "+str[i][2]+" "+Avg(score[i])+"\r\n";//"\r\n"代表文本文件换行
//下面两句也可以写成writer.write(str2);
buffer.write(str2);
buffer.flush();
}
writer.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println("保存成功!");
scanner.close();
}
private static double Avg(int[] score){
double sum=0;
for(int i:score){
sum+=(double)i;
}
return sum/3;
}
}
参考:https://www.cnblogs.com/bluestorm/p/3698810.html
https://blog.csdn.net/lykangjia/article/details/70159619