出于某种原因,我收到错误:
线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:11 at java.lang.String.charAt(String.java:646) 在IdenticalArrays.main(IdenticalArrays.java:28)
/ * *等级:CS 2301/08 *期限:2014年秋季 *姓名:Clarence E. Hollins III *导师:拉沙德琼斯 *作业:4 * / //创建一个程序,从用户接收两个字符串并打印它们是否相同
import java.util.Scanner;
import java.util.Arrays;
public class IdenticalArrays
{
public static void main(String [] Args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter list: ");
String s = input.nextLine();
char sizeofArray = s.charAt(0);
int size = (int)sizeofArray;
int[] firstList = new int [size];
for(int i = 0; i < firstList.length; i++)
{
firstList[i] = s.charAt(i+1);
}
System.out.println("Please enter list 2: ");
int[] secondList = new int[size];
for (int i=0; i<10; i++)
{
secondList[i] = s.charAt(i+1);
}
boolean status = equals(firstList, secondList);
if(status == true)
System.out.println("The first list is: " + firstList.length + " " + firstList);
System.out.println("The second list is: " + secondList.length + " " + secondList);
}
public static boolean equals(int[] list1, int[] list2)
{
Arrays.sort(list1);
Arrays.sort(list2);
for(int i = 0; i < list1.length && i < list2.length; i++)
{
if (list1[i] != list2[i])
{
return false;
}
}
return true;
}
}
答案 0 :(得分:0)
很难100%肯定,但是,如果你要做...
char sizeofArray = s.charAt(0);
然后......
for (int i = 0; i < firstList.length; i++) {
firstList[i] = s.charAt(i + 1);
你需要将循环次数减少1,因为你已经从String
中取出了第一个字符
现在,您可以使用String#subString
减少一个字符的输入,或者您可以简单地将迭代次数减少一个......
for (int i = 0; i < firstList.length - 1; i++) {
firstList[i] = s.charAt(i + 1);
这也适用于你的第二个循环
现在,尽管如此,鉴于你基本上忽略了size
的价值,你应该做更像...... {/ p>
//char sizeofArray = s.charAt(0);
int size = s.length();
int[] firstList = new int[size];
for (int i = 0; i < size; i++) {
firstList[i] = s.charAt(i);
}
请注意,根据要求......
创建一个程序,从用户接收两个字符串并打印它们是否相同
像String#equals(String)
之类的东西会更快解决......;)
答案 1 :(得分:0)
char[] firstList = s.toCharArray();
如果这些字符应该是数字,你可以做
char[] firstList = s.toCharArray();
int[] digits = new int[firstList.length];
for (int i = 0; i < digits.length; i++) {
digits[i] = Character.digit(firstList[i], 10);
}
最后,要测试两个int
数组是否相等,您可以使用Arrays.equals(int[],int[])
。