1. 编写一个程序,用户键盘录入若干个学生的姓名和分数(程序每次提示用户输入“Y”或“N”决定是否继续录入学生信息,如果用户输入“N”则用户输入完毕)。用户录入完毕后,程序按成绩由高到低的顺序输出学生的姓名和分数(姓名和分数之间用一个空格分割)。【说明:键盘输入可以使用Scanner类】
import java.util.*;
public class One {
public void fun(){
ArrayList<Student> stu= new ArrayList<Student>();
Scanner in = new Scanner(System.in);
System.out.println("请输入学生姓名和成绩");
while(true){
Student stemp=new Student();
stemp.name = in.next();
stemp.grade = in.nextInt();
stu.add(stemp);
System.out.println("是否继续录入学生信息?y/n");
String s3 = in.nextLine();
s3 = in.nextLine();
if(s3.trim().equals("n")||s3.trim().equals("N")){
break;
}
}
Com c = new Com();
Collections.sort(stu,c);
for(int i = 0; i<stu.size(); i++){
System.out.println(stu.get(i).name+" "+stu.get(i).grade);
}
in.close();
}
public static void main(String[] args){
One o = new One();
o.fun();
}
}
class Student {
String name;
int grade;
}
class Com implements Comparator<Student>{
public int compare(Student n1, Student n2) {
if(n1.grade>n2.grade)
return -1;
else if(n1.grade<n2.grade)
return 1;
else
return 0;
}
}
2. 用HashMap模拟一个网上购物车。要求:从键盘输入n本书的名称、单价、购买数量,将这些信息存入一个HashMap,然后将该HashMap作为参数调用方法getSum(HashMap books),该方法用于计算书的总价并返回。【说明:键盘输入可使用Scanner类】
import java.util.*;
public class Two {
double sum = 0;
HashMap map = new HashMap();
public double getSum(){
for(int i=0;i<map.size();i++){
Book tBook = (Book)map.get(i);
sum+= tBook.price *tBook.num;
}
return sum;
}
public void fun(){
int i=0;
while(true){
Book mBook = new Book();
Scanner in = new Scanner(System.in);
mBook.name = in.next();
mBook.price = in.nextDouble();
mBook.num = in.nextDouble();
map.put(i,mBook);
i++;
System.out.println("是否继续录入购物信息?y/n");
String s3 = in.nextLine();
s3 = in.nextLine();
if(s3.trim().equals("n")||s3.trim().equals("N")){
break;
}
}
}
public static void main(String[] args){
Two t = new Two();
t.fun();
System.out.println(t.getSum());
}
}
class Book{
String name;
double price;
double num;
}
3. 写一个彩票程序:30选7。随机(1~30之间)生成7个随机数,注意不能重复。然后从键盘输入7个数,对比7个数是否与随机数有相同的。最后显示“中了几个号”。同时,如果中了7个号,显示一等奖;如果中了6个号,显示二等奖;如果中了5个号,显示三等奖。要求:首先写出程序的实现思想,特别是程序所使用的数据结构,然后写出Java实现代码。【说明:键盘输入可以使用Scanner类】
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
public class Three {
int grade=0;
Set<Integer>s = new HashSet<Integer>();
Scanner in = new Scanner(System.in);
void fun(){
Random rd = new Random();
while(s.size()!=7){
int i = rd.nextInt(30);
s.add(i);
}
Iterator<Integer> iterator=s.iterator();
// while(iterator.hasNext()){
// System.out.print(iterator.next());
// System.out.println("f");
// }
for(int j = 0; j<7;j++){
String s1 = in.next();
int a= Integer.parseInt(s1);
iterator=s.iterator();
while(iterator.hasNext()){
if(a==(int)iterator.next()){
grade++;
}
}
}
if(grade==7){
System.out.println("一等奖");
}else if(grade==6){
System.out.println("二等奖");
}else if(grade==5){
System.out.println("三等奖");
}else {
System.out.println("谢谢惠顾");
}
}
public static void main(String[] args){
Three t = new Three();
t.fun();
}
}
4. 设计一个类的方法,其输入是两个字符串的集合(每个集合中的字符串有相同的意义,例如,一个全是姓名的字符串,一个全是班级的字符串),打印出这两个集合的笛卡尔乘积。
public class Four {
void fun(Object[] o1,Object[] o2){
for(int i = 0; i<o1.length; i++){
for(int j = 0; j<o2.length; j++){
System.out.println(o1[i].toString()+" "+o2[i].toString());
}
}
}
}