如何在java中进行比赛时使用输入

时间:2012-03-11 14:07:49

标签: java io

我正在尝试解决this "exponentiation" problem

这是我写的代码

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&gt;&gt;&gt;&gt;&gt; s)等使用c ++解决了这些问题)但我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分: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);

}

注意:上面的代码不会检查有效输入。

答案 1 :(得分:0)

扫描仪类也有hasNextBigDecimal()方法,所以你想这样做:

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

扫描程序对于大量输入文件来说很慢。如果该行具有众所周知的格式(例如,两个以空格分隔的数字),我正在使用BufferedReader:

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

如果你想使用java,你也应该学习Java naming conventions

使用split甚至比StringTokenizer更好,它更快。