-1

我需要在 java 1.4 中更改以下代码,任何人都可以帮我这样做。

我得到的主要问题是转换列表的字符串类型

行列表 splitStringList = new ArrayList ()

和线

for (String str: splitStringList) 为 java 1.4 生成错误

public class Demo2ReferDemo1 {
     public static void main (String [] args) {
            String inputStr = "00400 - 00479,00100 - 0022200su,00100 - 00228,00100 - 00228,00400 - 00479,lab661,";

            StringBuffer sb = new StringBuffer (inputStr);
            List<String> splitStringList = new ArrayList<String> ();
            boolean insideDoubleQuotes = false;
            StringBuffer field = new StringBuffer ();

            for (int i=0; i < sb.length(); i++) {
                if (sb.charAt (i) == '"' && !insideDoubleQuotes) {
                    insideDoubleQuotes = true;
                } else if (sb.charAt(i) == '"' && insideDoubleQuotes) {
                    insideDoubleQuotes = false;
                    splitStringList.add (field.toString().trim());
                    field.setLength(0);
                } else if (sb.charAt(i) == ',' && !insideDoubleQuotes) {
                    // ignore the comma after double quotes.
                    if (field.length() > 0) {
                        splitStringList.add (field.toString().trim());
                    }
                    // clear the field for next word
                    field.setLength(0);
                } else {
                    field.append (sb.charAt(i));
                }
            }
            for (String str: splitStringList) {
                System.out.println ("Split fields: "+str);
            }
        }
        }
4

2 回答 2

1

JAVA 1.4 不包括泛型,因此List<String> splitStringList = new ArrayList<String> ();无效。

将其更改为List splitStringList = new ArrayList ();

你还会发现

for (String str: splitStringList) {
        System.out.println ("Split fields: "+str);
}

会导致问题 - 这种语法直到 Java 5 才引入,因此您必须退回到其他循环之一(for例如循环)并将 List 成员转换为String

于 2014-06-06T12:12:09.487 回答
1

在这里,您的课程采用 java 1.4 兼容格式。变化是:

  • 没有泛型的 ArrayList 声明 <>
  • 最后一个“for”循环使用 Object 变量而不是 String 变量,因为 ArrayList 返回一个 Object 引用,以后可以将其转换为 String。类代码如下: import java.util.ArrayList; import java.util.List; public class Demo2ReferDemo1 { public static void main(String[] args) { String inputStr = "00400 - 00479,00100 - 0022200su,00100 - 00228,00100 - 00228,00400 - 00479,lab661,"; StringBuffer sb = new StringBuffer(inputStr); List splitStringList = new ArrayList(); boolean insideDoubleQuotes = false; StringBuffer field = new StringBuffer(); for (int i = 0; i < sb.length(); i++) { if (sb.charAt(i) == '"' && !insideDoubleQuotes) { insideDoubleQuotes = true; } else if (sb.charAt(i) == '"' && insideDoubleQuotes) { insideDoubleQuotes = false; splitStringList.add(field.toString().trim()); field.setLength(0); } else if (sb.charAt(i) == ',' && !insideDoubleQuotes) { // ignore the comma after double quotes. if (field.length() > 0) { splitStringList.add(field.toString().trim()); } // clear the field for next word field.setLength(0); } else { field.append(sb.charAt(i)); } } for (Object str : splitStringList) { System.out.println("Split fields: " + str); } } }
于 2014-06-06T12:32:32.453 回答