-2

我需要有关此代码的帮助

问题

  1. 编写一个具有全局可见性的 String 数组的 Java 类。
  2. 添加一个将给定字符串添加到字符串数组的方法。
  3. 添加一个在字符串数组中搜索给定字符串的方法。
  4. 添加一个在字符串数组中搜索给定字符的方法。该方法应该计算并返回给定字符的出现次数。
  5. 编写适当的 main 方法来测试这些类方法。

这就是代码。首先,我为方法创建了一个类,我为 TestString 数组创建了 scound 类

我的问题是我在 scound 课程中有错误,我尝试修复它,但它在第一堂课中不起作用:

 /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package ooplab3;

    public class StringArray {

        String[] sTA = null;
        int index = 0; //last added sring position in the string array

        public StringArray() {
        }

        public String[] getsTA() {
            return sTA;
        }

        public String getsTAindex(int i) {
            return sTA[i];
        }

        public int getcounter() {
            return index;
        }

        public void setCounter(int counter) {
            this.index = counter;
        }

        public void addStrinToArray(String st) {
            if (this.index < sTA.length) {
                sTA[this.index] = st;
                this.index++;
            }
        }

        public int searchStringInArray(String sT) {
            int n = 0;
            for (int i = 0; i < this.index; i++) {
                for (int j = 0; j < 10; j++) {
                    int indexOf = sTA[i].indexOf(sT);
                    n += searchStringInArray(sTA[i]);
                    return n;
                }
            }
            return n;
        }

        public int searchcharInArray(String sT) {
            int n = 0;
            int Startindex = 0;
            do {
                n += sT.indexOf(Startindex);
            } while (n > Startindex);
            return n;
        }

        public boolean containsChar(String s, char search) {
            if (s.length() == 0) {
                return false;
            } else {
                return s.charAt(0) == search || containsChar(s.substring(1), search);
            }
        }

        public void containsChar(Object object, String search) {
        }


    }

声音类:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ooplab3;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

public class testStringarray {


    public static void main(String[] args) throws FileNotFoundException {
        String[] testArray = new String[30];
        Scanner infile = new Scanner(new FileReader("input_txt"));


       // System.out.println("contents of testArray");

        int i = 0;
        while (infile.hasNext()) {
            String j = infile.next();
            addString(j, i);

            System.out.println(testArray[i] + "\n");

            i++;
        }
        }


    }


    the input file contain: hello this is my java program  
4

2 回答 2

0

据我所知,您有一个名为 的类StringArray,还有一个旨在测试StringArray. 但是第二类实际上根本没有使用 StringArray。相反,它会创建自己的数组,并调用一个addString()StringArray.

一个重要的问题StringArray是它永远不会创建一个实际的数组——它的数组成员变量仍然存在null。您需要一个 " new" 表达式来创建实际的数组。然后你的测试类应该做类似的事情

StringArray sa = new StringArray();
sa.addStringToArray("Hello, world");
String[] array = sa.getsTA();
for (String s: array)
    System.out.println(s);
于 2013-03-18T13:10:14.213 回答
0

存在许多问题。这是其中之一:

在您的 StringArray.addStrinToArray() 方法中,您尝试将字符串分配给空数组的元素:

String[] sTA = null;
sTA[index] = st;  //this will throw NullPointerException

您需要初始化数组:

String[] sTA = new String[initialSize];

其中 initialSize 是包含数组初始大小的整数。

于 2013-03-18T13:16:21.043 回答