2017-09-04 20 views
1

私はインターネットからデータベースを取得しようとしていますが、バグは消滅しています。スキャナでエラーが発生しました

package space; 
import java.io.File; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.util.Scanner; 
import java.net.URL; 
public class ArrayIntro { 
public static void main(String[] args) throws Exception { 
     String urlbase = "https://learnjavathehardway.org/txt/"; 
     double[] temps = arrayFromUrl(urlbase + "avg-daily-temps-atx.txt"); 

     System.out.println(temps.length + " temperatures in database."); 

     double lowest = 9999.99; 

     for (int i=0; i<temps.length; i++) { 
      if (temps[i] < lowest) { 
       lowest = temps[i]; 
      } 
     } 

     System.out.print("The lowest average daily temperature was "); 
     System.out.println(lowest + "F (" + fToC(lowest) + "C)"); 
    } 

    public static double[] arrayFromUrl(String url) throws Exception { 
     Scanner fin = new Scanner((new URL(url)).openStream()); 
     int count = fin.nextInt(); 

     double[] dubs = new double[count]; 

     for (int i=0; i<dubs.length; i++) 
      dubs[i] = fin.nextDouble(); 
     fin.close(); 

     return dubs; 
    } 

    public static double fToC(double f) { 
     return (f-32)*5/9; 
    } 
} 

値カウントは、私がリンクhttps://learnjavathehardway.org/txt/avg-daily-temps-atx.txtで最低温度を見つけようとしている6717.です。

そして、エラーはこれです:Scanner

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:864) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextDouble(Scanner.java:2413) 
    at space.ArrayIntro.arrayFromUrl(ArrayIntro.java:43) 
    at space.ArrayIntro.main(ArrayIntro.java:20) 
C:\Users\Administrator\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 3 seconds) 
+2

と '.'は、有効な小数点の記号でありますあなたのロケールで? – Tom

+0

どういう意味ですか? – Space

+0

どのようにあなたの国に "半分"を書いていますか? '0.5'か '0,5'? '0,5'ならば、フォーマットが間違っているので、明らかに' 0.5'のような数字を読み取ることはできません。 – Tom

答えて

0

あなたは小数点としてLocale.dotのように指定するLocaleでそれを使用することができます。

Scanner fin = new Scanner((new URL(url)).openStream()).useLocale(Locale.ENGLISH); 
関連する問題