교실에서 우리는 두 개의 클래스를 정렬하고 min에서 정렬하는이 클래스를 만들었습니다. ~ 최대. 이 클래스를 변경하여 이름이있는 텍스트 파일을 읽고 숫자 텍스트 파일에서 읽는 double 값 대신 사전 순으로 정렬하는 데 관심이 있습니다.double을 사용하는 대신 String을 읽도록이 클래스를 변경하는 방법에 대한 제안이 있으십니까?
package versionDouble;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class Datos {
double[] datos;
public Datos(String fileString) {
int cuantos = contarDatos(fileString);
this.datos = new double[ cuantos ];
leerDatos(fileString);
} // Datos
private void leerDatos(String fileString) {
try {
Scanner scanner = new Scanner(new File(fileString));
for (int i = 0; i < this.datos.length; i++) {
this.datos[i] = scanner.nextDouble();
} // for
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} // leerDatos
} // Datos class
@Override
public String toString() {
String string = "";
string = Arrays.toString(this.datos);
return string;
} // toString
private int contarDatos(String fileString) {
int contador = 0;
try {
Scanner scanner = new Scanner(new File(fileString));
while (scanner.hasNext()) {
scanner.nextDouble();
contador++;
} // while
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} // catch
return contador;
} // contarDatos
public void selectionSort() {
for (int startScan = 0; startScan < this.datos.length; startScan++) {
int minIndex = startScan;
double minValue = this.datos[ minIndex ];
for (int index = 0; index < this.datos.length; index++) {
if(this.datos[ index ] < minValue) {
minIndex = index;
minValue = this.datos[ index ];
} // if
} // for interno
if( minIndex != startScan ) {
double temporary = this.datos[startScan];
this.datos[ startScan ] = this.datos[ minIndex ];
this.datos [ minIndex ] = temporary;
} // swap
} // for externo
Arrays.sort(this.datos);
} // selectionSort
} // Class
난 이미 당신이 제안 처음 두 가지 있지만, 세 번째, "알파벳 대신 숫자의 문자열을 비교하는 방법을 찾아"을했다, 그게 어디 있죠 나는 길을 잃었다. – Ehrmantraut
문자열 클래스 메서드를 살펴 봅니다. –