1.人名地名排序 (10 分)
从键盘输入若干人名、地名或者国家名,要求按照升序排序之后输出。
package pra_end;
import java.util.Arrays;
import java.util.Scanner;
public class sort {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int num=in.nextInt();
String []str=new String[num];
for(int i=0;i
注意:
String []str=new String[num];数组定义方式
Arrays.sort(str);排序
2.字符串替换
将文本文件中指定的字符串替换成新字符串。 由于目前的OJ系统暂时不能支持用户读入文件,我们编写程序从键盘输入文件中的内容,当输入的一行为end时,表示结束。end后面有两个字符串,要求用第二个字符串替换文本中所有的第一个字符串。
package pra_end;
import java.util.Scanner;
public class str_replace {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String s="";
while(in.hasNextLine())
{
String str=in.nextLine();
if(str.equals("end"))
{
break;
}
else
s=s+str+"\n";//s字符串要在使用前定义
}
String a=in.nextLine();
String b=in.nextLine();
System.out.println(s.replaceAll(a, b));
}
}
运行结果:
注意:
Scanner. hasNextLine();当且仅当此扫描器有另一行输入时才返回 true;
String.equals();判断内容是否相同;此处不能使用 if (a=="end")
String.replaceAll(String a, String b) 此处用b替换a;
3.两个巨大素数(质数)的乘积 (10 分)
得到两个巨大素数(质数)的乘积是简单的事,但想从该乘积分解出这两个巨大素数却是国际数学界公认的质因数分解难题。这种单向的数学关系,是不对称加密RSA算法的基本原理。 本题给出两个大素数(128bit位)的乘积和其中一个素数,请你编程求出另一个素数。
输入格式:
44022510695404470886511586569647292146578314354528108825807522926455663589709 (大素数的乘积)
189193782774204832019945226750213439577 (其中一个大素数)
输出格式:
232684764001698545563067004009755869717 (另一个素数)
import java.math.BigInteger;
import java.util.Scanner;
public class big_integer {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
BigInteger a=in.nextBigInteger();
BigInteger b=in.nextBigInteger();
BigInteger c=a.divide(b);
System.out.println(c);
}
}
运算结果:
注意:
BigInteger.divide(BigInteger val);返回其值为 (this / val) 的 BigInteger。
Scanner.nextBigInteger();将输入信息的下一个标记扫描为一个 BigInteger。
4.使用公历类GregorianCalendar (10 分)
使用公历类 GregorianCalendar,公历类 GregorianCalendar有方法setTimeInMillis(long);可以用它来设置从1970年1月1日算起的一个特定时间。请编程从键盘输入一个长整型的值,然后输出对应的年、月和日。例如输入:1234567898765,输出:2009-1-14
输入格式:
1234567898765 (毫秒数)
输出格式:
2009-1-14 (输出年、月和日,实际应该是2月,因为Java API 从0开始计算月份)
import java.util.Calendar;
import java.util.Scanner;
public class calender {
public static void main(String[] args) {
//要把输入的数字存储为String类,然后将其转换为Long类型
Scanner in=new Scanner(System.in);
String s=in.next();
Calendar c=Calendar.getInstance();
c.setTimeInMillis(Long.parseLong(s));
System.out.println(c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.DAY_OF_MONTH));
}
}
注意:
要把输入的数字存储为String类,然后将其转换为Long类型
Calender.DAY_OF_MONTH;(不带括号)得到一个月中的第几天。一个月中第一天的值为 1。
Calender.getInstance();使用默认时区和语言环境获得一个日历。
Long.parseLong(String s);将 string 参数解析为有符号十进制 long。
setTimeInMillis(long millis);用给定的 long 值设置此 Calendar 的当前时间值。
5.电话号码同步(Java) (10 分)
文件phonebook1.txt和phonebook2.txt中有若干联系人的姓名和电话号码。请你设计一个程序,将这两