1094 谷歌的招聘 (20 分)(java)测试点2和nextLine和CharAt函数问题

输入在第一行给出 2 个正整数,分别是 L(不超过 1000 的正整数,为数字长度)和 K(小于 10 的正整数)。接下来一行给出一个长度为 L 的正整数 N。
输出格式:

在一行中输出 N 中最早出现的 K 位连续数字所组成的素数。如果这样的素数不存在,则输出 404。注意,原始数字中的前导零也计算在位数之内。例如在 200236 中找 4 位素数,0023 算是解;但第一位 2 不能被当成 0002 输出,因为在原始数字中不存在这个 2 的前导零。
输入样例 1:

20 5
23654987725541023819
输出样例 1:

49877
输入样例 2:

10 3
2468024680
输出样例 2:

404
在这个题目的解答时,首先遇到了一个问题就是用nextLine 后面用CharAt(index)进行访问的时候,被抛出越界错误了,错误的上限是0参考这个博主的文章,就可以好好了解一下了https://blog.csdn.net/ysy950803/article/details/78187893,解决的方案就是1.反正这个题目都是数字,没有其他什么空格的字符,我们就直接用next()就好了2.或者再两个nextInt()后面再加上一个String t=in.nextLine()来吃掉这个上次保留的回车。
题目种测试点2的卡点就在于最后一句话,23的输出格式是0023不是23,可是这个没有固定的位数啊,这怎么办,我的解决就是用Integer包裹类来代表得到的sum,sum的位数可以用sum.toString().length()连着来表示出来,这样就是到有几位0需要补齐了。


import java.util.Scanner;
import org.omg.CORBA.INTERNAL;

public class Main {
	 static boolean isPrime(int n)
	{
		int i;
		if(n<2)
			return false;
		else if(n==2)
			return true;
		else
		{
			for(i=2;i<=Math.sqrt(n);i++)
			{
				if(n%i==0)
				{
					return false;
				}
			}
		}
		return true;
	}
	public static void main(String[] args)
	{
		Scanner in=new Scanner(System.in);
		int count=0;
		Integer sum=0;
		String t;
		int L=in.nextInt();
		int K=in.nextInt();
		t=in.nextLine();	//吃掉上次nextInt留下的换行问题
		String str=in.nextLine();
		
		for(count=0;count

你可能感兴趣的:(PAT乙级,java)