0

教室では、double を並べ替えて min から並べ替えるこのクラスを作成しました。最大に。このクラスを変更して、数値テキスト ファイルから読み取る double ではなく、名前を含むテキスト ファイルから読み取り、アルファベット順に並べ替えることに関心があります。

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
4

2 に答える 2

0

最も効率的ではありませんが、簡単な解決策はString.value(double d);、double の String 表現を呼び出して取得することです!

例:

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

于 2013-10-22T03:44:11.500 に答える
0

または などScanner、 で別のメンバー関数を呼び出す必要があります。また、いくつかの変数のデータ型を変更して、浮動小数点数ではなく文字列を格納します。また、数値ではなくアルファベット順に文字列を比較する方法を見つける必要があります。next()nextLine()

于 2013-10-22T03:15:56.833 に答える