1.String类的常用方法
在Begin-End区域中按照要求补充代码。运行结果如下所示:
s1与s2不相同
手机号以139开头
按字典序s4小于s5
d:\java\A.java中最后出现\的位置为: 7
d:\java\A.java中含有的文件名为: A.java
100 + 123.678 的和为: 223.678
数字223.678有3位小数
ABCDEF 逆序字符输出为: F E D C B A、
代码如下:
package step1;
public class StringExample {
public static void main(String args[]) {
String s1 = new String("you are a student");
String s2 = new String("how are you");
// 使用equals方法判断s1与s2是否相同
if ( s1.equals(s2) ) {
System.out.println("s1与s2相同");
} else {
System.out.println("s1与s2不相同");
}
String s3 = new String("13971918888");
// 判断手机号是否以“139”开头
if ( s3.lastIndexOf("139")==0) {
System.out.println("手机号以139开头");
}
String s4 = new String("你"), s5 = new String("我");
// 按着字典序s4大于s5的表达式
if ( s4.compareTo(s5)>0 ) {
System.out.println("按字典序s4大于s5");
} else {
System.out.println("按字典序s4小于s5");
}
/******************************************************/
int position = 0;
String path = "d:\\java\\A.java";
// 获取path中最后出现\\的位置
position = path.lastIndexOf("\\") ;
System.out.println(path + "中最后出现\\的位置为: " + position);
// 利用字符串截取方法获取path中“A.java”子字符串
String fileName = path.substring(position+1) ;
System.out.println(path + "中含有的文件名为: " + fileName);
/******************************************************/
String s6 = new String("100");
String s7 = new String("123.678");
// 将s6转化成int型数据
int n1 = Integer.parseInt(s6) ;
// 将s7转化成double型数据
double n2 = Double.parseDouble(s7) ;
double m = n1 + n2;
System.out.println(n1 + " + " + n2 + " 的和为: " + m);
// String类调用valuOf(double n)方法将m转化为字符串对象
String s8 = String.valueOf(m) ;
position = s8.indexOf(".");
// 利用字符串截取方法获取s8中小数点后面的小数
String temp = s8.substring(position + 1) ;
System.out.println("数字" + m + "有" + temp.length() + "位小数");
String s9 = new String("ABCDEF");
// 将s9存放到数组a中
char a[] = s9.toCharArray() ;
System.out.print(s9 + " 逆序字符输出为: ");
for (int i = a.length - 1; i >= 0; i--) {
System.out.print(" " + a[i]);
}
}
}
2.矩阵转置
定义一个3行3列整型二维数组,并给二维数组赋值,分别打印出原二维数组和行列互调后的二维数组。
代码如下:
package step2;
import java.util.Scanner;
public class SwapMatrix {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[][] matrix = new int[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matrix[i][j] = scanner.nextInt();
}
}
/********** Begin **********/
System.out.println("原始数组为:");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j]+" ");
}
System.out.println();
}
System.out.println("行列互调后数组为:");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[j][i]+" ");
}
System.out.println();
}
/********** End **********/
scanner.close();
}
}
3.求平均分及各个区间段的人数
这是一个计数和累加问题。学生数量不确定,但有一个结束标记(-1),该问题的总体结构是一个循环处理问题,可用while循环,当输入数据为-1时结束循环。为了统计各种情况的人数,需要设立相应的计数变量,并给其赋初值0,另外为了求平均分,必须计算总分,也就是计算出所有学生成绩的累加和,然后除以总人数即可得到平均分。
注意:平均分结果保留1位小数。
输入数据样例: 75.5 80 92.5 64.5 55 87.5 98 -1
输出结果样例:
不及格的人数为:1
及格的人数为:1
中等的人数为:1
良好的人数为:2
优秀的人数为:2
全班平均分为:79.0
代码如下:
package step3;
import java.util.Scanner;
public class Score {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
/********** Begin **********/
double a=scanner.nextDouble(),m=0;
int b=0,c=0,d=0,e=0,f=0,n=0;
while(a!=-1) {
n++;
m+=a;
if(a>90)
f++;
else if(a>=80)
e++;
else if(a>=70)
d++;
else if(a>=60)
c++;
else b++;
a=scanner.nextDouble();
}
System.out.printf("不及格的人数为:%d\n",b);
System.out.printf("及格的人数为:%d\n",c);
System.out.printf("中等的人数为:%d\n",d);
System.out.printf("良好的人数为:%d\n",e);
System.out.printf("优秀的人数为:%d\n",f);
System.out.printf("全班平均分为:%.1f",m/n);
/********** End **********/
scanner.close();
}
}