在课堂上,我们制作了这个课程,对双打进行排序并从最短时间开始安排。到最大我有兴趣更改此类以从具有名称的文本文件中读取并按字母顺序对其进行排序,而不是从数字文本文件中读取的双精度数。
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
答案 0 :(得分:0)
您需要在Scanner
上调用其他成员函数,例如next()
或nextLine()
。此外,更改多个变量的数据类型以存储字符串而不是浮点数。此外,您必须找到一种方法来按字母顺序而不是数字地比较字符串。
答案 1 :(得分:0)
虽然不是最有效的,但快速的解决方案是可以调用String.value(double d);
并获取双精度的字符串表示形式!
示例:
import java.io.*;
public class Test{
public static void main(String args[]){
double d = 102939939.939;
System.out.println("Return Value : " + String.valueOf(d) );
}
}
输出:
Return Value : 1.02939939939E8