Как принять ввод, используя в то время как в Java для конкурсов - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь решить эту проблему "возведения в степень" .

Вот код, который я написал

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);


    }

}

Теперь вопрос, который я хочу задать, состоит в том, как бы мне принять ввод до конца файла? (Я решил такие проблемы, используя c ++, используя while (cin >> v >> s) и т. Д.) Но я не знаю, как это решить.

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Класс сканера также имеет 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 .

И даже лучше, чем split, использовать StringTokenizer, это быстрее.

0 голосов
/ 12 марта 2012

Ответ на ваш вопрос:

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);

}

Примечание. Приведенный выше код не проверяет правильность ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...