共计 3438 个字符,预计需要花费 9 分钟才能阅读完成。
JAVA36 判断学生问题
形容
定义一个办法用于录入学生的考试成绩,要求考试成绩必须在 0 -100 之间,不满足就产生一个自定义异样,控制台输入一个错误信息 ” 分数不非法 ”(请输入自定义异样对象的错误信息,将错误信息设置为分数不非法)
输出形容
控制台输出的 int 类型整数
输入形容
若分数非法则输入该分数,否则输入错误信息分数不非法
示例 1
输出:
100
输入:
100
示例 2
输出:
-1
输入:
分数不非法
解答
定义一个异样类,而后重写异样类输出异样信息处理的办法,留神此时到了构造方法。而后就是利用 if...else
条件分支对输出进行判断,依据合乎的条件进入不同的执行分支。如果输出的分数不满足 [0,100]
的状况,那么就间接抛出异样。
import java.util.*;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);
int score = scanner.nextInt();
try {if (score >= 0 && score <= 100)
System.out.println(score);
else {throw new ScoreException("分数不非法");
}
} catch (ScoreException str) {System.out.println(str.getMessage());
}
}
}
class ScoreException extends Exception {public ScoreException(String message) {super(message);
}
}
JAVA37 字符串去重
形容
从键盘获取一串字符串,要求去除反复的字符。请应用 HashSet 解决这一问题
输出形容
键盘输入的任意字符串
输入形容
去重后的字符串(不要求程序, 预设代码中曾经给出输入)
示例 1
输出:
helloworld
输入:
rdewhlo
解答
既然题目中曾经提醒了利用 HashSet
,那么间接应用就好了,然而要留神的是,往 HashSet
里边增加元素失去的后果是无序的,如果要想得到有序的后果,那么则不能应用 HashSet
。
import java.util.HashSet;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
scanner.close();
HashSet<Character> hs = new HashSet<>();
for (int i = 0; i < str.length(); i++) {hs.add(str.charAt(i));
}
for (char c : hs) {System.out.print(c);
}
}
}
JAVA38 汇合遍历
形容
请应用三种形式遍历一个 list
汇合
输出形容
键盘任意输出的五个 int 类型变量
输入形容
应用三种不同的办法遍历汇合,遍历输入时不换行,数字之间用空格隔开
示例 1
输出:
1 2 3 4 5
输入:
一般 for 循环:1 2 3 4 5
加强 for 循环:1 2 3 4 5
迭代器遍历:1 2 3 4 5
解答
次要考查根底语法,要牢记的两种 for
循环,一种是一般循环,另一种则是加强循环,而迭代器能把握就更好了。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<>();
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();
int num4 = scanner.nextInt();
int num5 = scanner.nextInt();
scanner.close();
list.add(num1);
list.add(num2);
list.add(num3);
list.add(num4);
list.add(num5);
System.out.print("一般 for 循环:");
for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");
}
System.out.println();
System.out.print("加强 for 循环:");
for (int num : list) {System.out.print(num + " ");
}
System.out.println();
System.out.print("迭代器遍历:");
Iterator it = list.iterator();
while (it.hasNext()) {System.out.print(it.next() + " ");
}
System.out.println();}
}
JAVA39 排队零碎
形容
请设计一个排队程序,用户有一般客人和 VIP 客人之分,VIP 客人不排队(即 VIP 客人在队列头部),目前队列中已有两位客人小明和小军在排队,请将 VIP 客人小红新增至队列头部。
输出形容
无
输入形容
预设代码中曾经指定输入
解答
对于 VIP
客人,和一般客人最大的区别就在于 VIP
客人不必排队,所以无论何时 VIP
来都能够排到队列的最前边,利用 addFirst()
办法即可实现插队到第一位。
import java.util.*;
public class Main {public static void main(String[] args) {Guest guest1 = new Guest("小明", false);
Guest guest2 = new Guest("小军", false);
Guest vipGuest = new Guest("小红", true);
Deque<Guest> deque = new ArrayDeque<>();
deque.add(guest1);
deque.add(guest2);
deque.addFirst(vipGuest);
System.out.println(deque);
}
}
class Guest {
String name;
Boolean vip;
@Override
public String toString() {return name;}
public Guest(String name, Boolean vip) {
this.name = name;
this.vip = vip;
}
}
JAVA40 首尾交替出队
形容
现从一队学生中抽人上台演讲,为偏心起见,队头队尾交替抽取,请通过程序实现这个出队的过程。
输出形容
一组学生的名字
输入形容
交替打印队头队尾学生的名字
示例 1
输出:
Tom Jim Lily Lucy Mary
输入:
Tom
Mary
Jim
Lucy
Lily
解答
分为两种状况,如果队列长队不小于 2,那么则一直从队列中顺次头、尾打印学生名字。另外一种状况就是此时队伍中只有一个学生了,这个时候只须要打印其名字即可。
import java.util.ArrayDeque;
import java.util.Scanner;
public class Main {public static void main(String[] args) {ArrayDeque deque = new ArrayDeque();
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {String name = scanner.next();
// 初始化队列中的数据
deque.offerLast(name);
}
while (deque.size() >= 2) {System.out.println(deque.pollFirst());
System.out.println(deque.pollLast());
}
if (deque.size() > 0) {System.out.println(deque.pollFirst());
}
}
}
本文由 mdnice 多平台公布