2017-03-04 9 views
0

나는 텍스트 파일에서 일련의 실수를 배열로 읽는 Java 프로그램을 작성했습니다. 스캐너를 -1.0에 도달하면 스캐너에서 파일 읽기를 중지하도록 -1.0을 센티널로 사용하고 싶습니다.자바 센티널 - 배열로 텍스트 파일 읽기

나는 올바른 위치에 센티널을 삽입하는 데 어려움을 겪고 있으며, if 또는 while 문으로 수행해야하는지 확실하지 않습니다. 어떤 도움이 많이 감사 :

import java.util.Scanner; 
import java.io.File; 
import java.io.FileNotFoundException; 

public class CalculatingWeights { 

    public static void main(String[] args) throws FileNotFoundException { 

     //Create file and scanner objects 
     File inputFile = new File("in.txt"); 
     Scanner in = new Scanner(inputFile); 

     //declare variables 
     double [] myArray = new double [100]; 
     int i = 0; 
     double min = myArray[0]; 
     double max = myArray[0]; 

     //Read numbers from file, add to array and determine min/max values 
     while(in.hasNextDouble()) { 
      myArray[i] = in.nextDouble(); 
      if(myArray[i] < min) { 
       min = myArray[i]; 
      } 
      if(myArray[i] > max) { 
       max = myArray[i]; 
      } 
      i++; 
     } 

     //Calculate and print weighting 

     for(int index = 0; index < myArray.length; index++) { 
      double num = myArray[index]; 
      double weighting = (num - min)/(max - min); 
      System.out.printf("%8.4f %4.2f\n", num, weighting); 
     } 
    } 
} 

답변

0

코드 사용이

double [] myArray = new double [100]; 
     int count = 0; 
     double min = myArray[0]; 
     double max = myArray[0]; 

     //Read numbers from file, add to array and determine min/max values 
     while(in.hasNextDouble()) { 
      myArray[count] = in.nextDouble(); 
      //sentinel 
      if(myArray[count]==-1.0) 
       break; 
      if(myArray[count] < min) { 
       min = myArray[count]; 
      } 
      if(myArray[count] > max) { 
       max = myArray[count]; 
      } 
      count++; 
     } 

     //Calculate and print weighting 

     for(int index = 0; index < count; index++) {//<-----NOTE HERE: as the array is filled upto "count" 
      double num = myArray[index]; 
      double weighting = (num - min)/(max - min); 
      System.out.printf("%8.4f %4.2f\n", num, weighting); 
     } 
를 많이 변경하지 않고