简体   繁体   中英

Java StringTokenizer assistance

So, I have a separate program that requires a string of numbers in the format: final static private String INITIAL = "281043765"; (no spaces) This program works perfectly so far with the hard coded assignment of the numbers. I need to, instead of typing the numbers in the code, have the program read a txt file, and assign the numbers in the file to the INITIAL variable

To do this, I'm attempting to use StringTokenizer. My implementation outputs [7, 2, 4, 5, 0, 6, 8, 1, 3]. I need it to output the numbers without the "[]" or the "," or any spaces between each number. Making it look exactly like INITIAL. I'm aware I probably need to put the [] and , as delimiters but the original txt file is purely numbers and I don't believe that will help. Here is my code. (ignore all the comments please)

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class test {
//public static String num;
static ArrayList<String> num;
//public static TextFileInput myFile;
public static StringTokenizer myTokens;
//public static String name;
//public static String[] names;
public static String line;

public static void main(String[] args) {

    BufferedReader reader = null;

    try {
        File file = new File("test3_14.txt");
        reader = new BufferedReader(new FileReader(file));
        num = new ArrayList<String>();
        while ((line = reader.readLine())!= null) {       


            myTokens = new StringTokenizer(line, " ,");
            //num = new String[myTokens.countTokens()];

               while (myTokens.hasMoreTokens()){
                   num.add(myTokens.nextToken());

            }        
         }    
            System.out.println(num);   

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    }

}

You are currently printing the default .toString() implementation of ArrayList. Try this instead:

for (String nbr : num) {
   System.out.print(nbr)
}

To get rid of the brackets, you have to actually call each item in the ArrayList. Try this just below your System.out.println

for(String number : num)
    System.out.print(number);
System.out.println("");

Can you also provide sample input data?

Try Replacing space and , with empty string

line = StringUtils.replaceAll(line, “,” , “”);
line = StringUtils.replaceAll(line, “ “, “”);
System.out.println(line);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM