gpt4 book ai didi

java - word Array 程序出站错误

转载 作者:行者123 更新时间:2023-11-30 08:59:22 24 4
gpt4 key购买 nike

import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;

/**
This class prints the numeric value of a letter grade given by the user.
*/
public class Words
{
int i=0;
String[] wordz;
/**
Constructs words class
*/
public Words()
{
wordz= new String[5];
}

/**
collects 5 words from user and places then into array
@return the gradeValue
*/
public void inputArray(String a, String b, String c, String d, String e)
{
wordz = new String[] { a, b, c, d, e };
}

/**
counts even and odds
@return numeric grade
*/
public void removeShortWords()
{
ArrayList<String> wordzList = new ArrayList<String>(Arrays.asList(wordz));
for(i=0; i < wordz.length; i++)
{

if(wordz[i].length() < 3)
wordzList.remove(i);//out of bounds error here

String[] wordz = wordzList.toArray(new String[wordzList.size()]);
}
}

/**
prints out the array of 10 positive integers
@return numeric grade
*/
public void printArray()
{
System.out.println(Arrays.toString(wordz));
}
}

这是我的测试类。

import java.util.Scanner;

public class WordPrgm {

public static void main(String[] args)
{
Words wordArray = new Words();
System.out.println("PLease enter five words");
Scanner in = new Scanner(System.in);
String w1 = in.nextLine();
String w2 = in.nextLine();
String w3 = in.nextLine();
String w4 = in.nextLine();
String w5 = in.nextLine();
wordArray.inputArray(w1, w2, w3, w4, w5);
wordArray.removeShortWords();
wordArray.printArray();
}
}

这里的程序应该从数组中删除少于 3 个字母的单词并打印出新单词。我一直在一次又一次地查看代码,但我看不到解决方案在哪里以及我遗漏了什么。我认为 for 循环可能搞砸了或什么的。谢谢!

我在程序的这一点上不断收到错误。

wordzList.remove(i);

最佳答案

 ArrayList<String> wordzList = new ArrayList<String>(Arrays.asList(wordz));
for(i=0; i < wordz.length; i++)
{

if(wordz[i].length() < 3)
wordzList.remove(i);//out of bounds error here

String[] wordz = wordzList.toArray(new String[wordzList.size()]);
}

让我解释一下您遇到问题的原因。假设你有 5 个、第 2 个和第 5 个长度小于 3 的单词中的 2 个。所以你必须从“wordzList”中删除 2 个字符串。假设您删除了第二个,现在列表大小为 4,最后一个可用值位于索引 3。当您查找位于数组索引 4 的第 5 个字符串时,您试图从列表中删除不存在的元素。列表的最后一个索引是 3,但您正试图删除索引 4 处的元素。希望您能解决这个问题。想想要克服的逻辑。

快乐编码。

关于java - word Array 程序出站错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27310547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com