import java.util.Scanner;
public class zhuanHuan_Rome {
public static void main(String[] args) {
//输入字符串
Scanner sc = new Scanner(System.in);
System.out.println("输入字符串:");
String str = sc.next();
System.out.println(str);
System.out.println(checkStr(str));
}
//判断要求的方法
public static boolean checkStr(String str) {
if (str.length() <= 9) {
for (int i = 0; i <= str.length(); i++) {
char c = str.charAt(i);
if (c < '0' || c > '9')
return false;
}
}
return true;
}
}
错误在第 22 行,注意 str.length() 的下标是取不到的,所以是 i < str.length() 而非 <=。
另外,可以用 toCharArray() 方法简化程序:
import java.util.Scanner;
public class zhuanHuan_Rome {
public static void main(String[] args) {
//输入字符串
Scanner sc = new Scanner(System.in);
System.out.println("输入字符串:");
String str = sc.next();
System.out.println(str);
System.out.println(checkStr(str));
}
//判断要求的方法
public static boolean checkStr(String str) {
if (str.length() <= 9) {
for (char c : str.toCharArray()) {
if (c < '0' || c > '9')
return false;
}
}
return true;
}
}
望采纳。
不会
我们通过一个例子来看看:
各进程到达就绪队列的时间、需要的运行时间表如下。使用时间片轮转调度算法,分析时间片大小分别是2、5时的进程运行情况。
时间片轮转调度算法:轮流让就绪队列中的进程依次执行一个时间片(每次选择的都是排队在就绪队列队头的进程)
时间片大小为2
(以下括号内表示当前时刻就绪队列中的进程、进程的剩余运行时间)
P1(5)
):0时刻只有P1到达就绪队列,让P1上处理机运行一个时间片P2(4)->P1(3)
):2时刻P2到达就绪队列,P1运行完一个时间片,被剥夺处理机,重新放到队尾。P1(3)->P3(1)->P2(2)
):4时刻,P3到达,先插入到就绪队尾,紧接着,P2下处理机也插入到队尾P3(1)->P2(2)->P4(6)
):5时刻,P4到达插到就绪队尾(由于P1的时间片还没用完,因此暂时不调度。另外,此时P1处于运行态,并不在就绪队列)时间片大小为5
P1(5)
):只有P1到达,P1上处理机P2(4)
):P2到达,但P1时间片尚未结束,因此暂不调度P2(4)->P3(1)
):P3到达,但P1时间片尚未结束。发生调度,P2上处理及P2(4)->P3(1)->P4(6)
):P4运行结束,同时,P1运行结束。发生调度,P2上处理机P3(1)->P4(6)
):P2运行结束,虽然时间片没用完,但是会主动放弃处理机。发生调度P4(6)
):P3运行结束,虽然时间片没用完,三十会主动放弃处理机。发生调度如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮状调度算法退化为
先来先服务算法
,并且会增大进程响应时间
。因此时间片不能太大
。
另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小
,会导致进程切换过于频繁
,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小
。