Ich muss nur Zahlen speichern, die 8 Ziffern und kein Wort in einem Array haben, und wenn es nicht nur ist, um es auf der Konsole zu drucken. Einmal im Array muss ich sie sortieren und sie in die rechte Seite drucken und die linke Seite hat die unsortierte Liste.Wie muss ich eine Datei mit Kommata und Wörtern lesen und nur Zahlen in einem Array speichern?
Also ich bin in einer Datei mit Kommas fest, es funktioniert nur, wenn es keine Kommas oder Leerzeichen hat. Ich soll die Methode "compareTo" und den "StringTokenizer" verwenden. Ich weiß, wie beide funktionieren, aber ich mache einfach nicht das, was ich will, vielleicht stelle ich es in die falsche Funktion. Ich muss auch diese Datei trennen und in eine separate Datei die GUI-Funktionen nicht sicher, was Sie auf diese Datei legen.
public class Project1 {
static final int LIST_SIZE = 10;
static int ssnSize;
static String line;
static String[] ssnList;
static TextFileInput inFile;
static String inFileName = "Dates.txt"; //save the file in Lab12 folder on BB in your project folder
static JFrame myFrame;
static Container myContentPane;
static TextArea left, right;
public static void main(String[] args) {
initialize();
readNumbersFromFile(inFileName);
printSSNList(ssnList,ssnSize);
printSSNtoJFrame(myFrame,ssnSize);
}
public static void initialize() {
inFile = new TextFileInput(inFileName);
ssnList= new String[LIST_SIZE];
ssnSize=0;
line ="";
left = new TextArea();
right = new TextArea();
myFrame = new JFrame();
myFrame.setSize(400, 400);
myFrame.setLocation(200, 200);
myFrame.setTitle("");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void readNumbersFromFile(String fileName)
{
String ssn;
ssn = inFile.readLine();
while (ssn != null) {
assert (isValidDate(ssn)): "SSN not valid";
if (!isValidDate(ssn))
throw new IllegalArgumentException("Invalid SSN");
else
storeDates(ssn,ssnList);
ssn = inFile.readLine();
} //while
} //readSSNsFromFile
public static void printSSNList(String[] list, int size)
{
assert (isValidList(list)): "The array is not valid";
if (!isValidList(list)){
throw new IllegalArgumentException("Invalid list)");
}
for (int i=0;i<size;i++)
if (!isValidDate(list[i]))
System.out.println("Invalid SSN: "+list[i]);
else
System.out.println(list[i]);
}
public static void storeDates(String s, String[] list)
{
assert (isValidDate(s)): "The SSN is not valid";
assert (isValidList(list)): "The array is not valid";
if (isValidDate(s) && isValidList(list))
list[ssnSize++]=s;
assert (isValidList(list)):"Resulting list not valid";
}
public static void printSSNtoJFrame(JFrame jf, int size)
{
assert (isValidList(ssnList)): "The array is not valid";
if (!isValidList(ssnList)){
throw new IllegalArgumentException("Invalid list)");
}
jf.setLayout(new GridLayout(1, 2));
myContentPane = jf.getContentPane();
TextArea myLeftArea = new TextArea();
TextArea myRightTextArea = new TextArea();
myContentPane.add(myLeftArea);
myContentPane.add(myRightTextArea);
for (int i=0;i<size;i++)
{
if (!isValidDate(ssnList[i]))
myLeftArea.append("Invalid SSN: "+ssnList[i]+"\n");
else
{
myLeftArea.append(ssnList[i]+"\n");
}
}
sortOnlyNumbers(ssnList);
for(int j=0; j< size; j++)
{
myRightTextArea.append(ssnList[j]+"\n");
}
jf.setVisible(true);
}
private static void sortOnlyNumbers(String[] array)
{
List<Integer> indexes = new ArrayList<Integer>();
List<Integer> numbers = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++) {
try {
numbers.add(Integer.parseInt(array[i]));
indexes.add(i);
} catch (NumberFormatException e) {
// don't care
}
}
Collections.sort(numbers, Collections.reverseOrder());
for (int i = 0; i < numbers.size(); i++) {
array[indexes.get(i)] = String.valueOf(numbers.get(i));
}
}
public static boolean isValidDate(String s)
{
if (s.length() != 8) {
throw new IllegalArgumentException("An SSN length must be 9");
}
for (int i=0;i<8;i++)
if (! Character.isDigit(s.charAt(i))) {
throw new IllegalArgumentException("SSN must have only digits.");
}
return (true);
}
public static boolean isValidList(String[] list)
{
if (list == null){
return false;
}
if (ssnSize == list.length){
return false;
}
return (true);
}
}
die Textdatei hat folgendes:
20080912,20131120,19980927, \ n 20.020.202, hallo