2012-03-11 21 views
0

私はthis "exponentiation" problemを解決しようとしています。ここでコンテストのためにJavaで入力を使用して入力する

は今、私が聞いてみたい質問はどのように私は、ファイルの最後まで入力を取るだろうということです私は

import java.util.Scanner; 
import java.util.ArrayList; 
import java.math.BigInteger; 
import java.io.*; 
import java.math.*; 
import java.util.ArrayList; 


public class Main { 
    public static void main(String[] args) { 
     Scanner Input = new Scanner(System.in); 
     BigDecimal R,f;// = new BigInteger(); 
     ArrayList <String> ans = new ArrayList <String>(); 
     int n; 
    ///// I dont know how to deal with it   
    while( R = Input.nextBigDecimal(), n = Input.nextInt()) 
    //// 
    f = R.pow(n); 
    f = f.stripTrailingZeros(); 
    String s = f.toPlainString(); 
    String answer = ""; 
    answer = s; 

    if(s.charAt(0) == '0') 
     s = s.substring(1); 
    ans.add(answer); 

    System.out.println(s); 


    } 

} 

を書かれているコードのですか? (while(cin >> v >> s)などを使ってC++を使ってこのような問題を解決しましたが)これを解決する方法はわかりません。

答えて

0

ScannerクラスもhasNextBigDecimal()方法を持っているので、あなたがやりたい:

while (Input.hasNextBigDecimal()) { 
    R = Input.nextBigDecimal(); 
    n = Input.nextInt(); 
    ... // processing 
} 

スキャナは、巨大な入力ファイルの遅いです。ラインはよく(例えば、スペースで区切られた2つの数値を)フォーマットを知っていた場合、私はBufferedReaderのを使用しています:あなたは、Javaを使用したい場合は、あなたもJava naming conventions学ぶべき

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String parts[] = br.readLine().split(" "); 

さらにsplitよりもStringTokenizerを使用する方が早いです。

0

あなたが質問に対する答えは次のとおりです。

public static void main(String[] args) { 
    // TODO code application logic here 
    System.out.println("Please enter the R and n values seperated by space"); 
    Scanner Input = new Scanner(System.in); 
    BigDecimal R = null; 
    BigDecimal f = null;// = new BigInteger(); 
    ArrayList<String> ans = new ArrayList<String>(); 
    int n = 0; 

    R = (Input.nextBigDecimal()); 
    System.out.println("The value of R is " + R); 
    n = Input.nextInt(); 
    System.out.println("The value of n is " + n); 

    f = R.pow(n); 
    f = f.stripTrailingZeros(); 
    String s = f.toPlainString(); 
    String answer = ""; 
    answer = s; 

    if (s.charAt(0) == '0') { 
     s = s.substring(1); 
    } 
    ans.add(answer); 

    System.out.println(s); 

} 

注:上記のコードの有効な入力をチェックしません。

関連する問題