PAT B 1024(JAVA) - ロングブラシ弟のタイトルパス

1024科学的表記法(20分)、
科学的表記法では、正規表現[±] [1-9]は大きいまたは非常に少数のための便利な方法、科学者を示すために使用される。[ 0-9] + E [±] [0-9] + 、 ナンバーワンの、すなわち、唯一の整数部、少なくとも一つの小数部がある、デジタル符号、指数部は、明示的にも正について説明しなければなりません。

実数は、現在の科学的表記形式、方法Aの一般的なデジタル表現として書込みプログラム出力で与えられ、そしてすべての有効ビットは予約されていることを確実にします。

入力フォーマット:
各入力テストを含む、すなわち、科学的表記の実数は、Aで表されます 長さが格納されていない、この数は9999のバイトを超え、絶対値以上9999指標ではありません。

出力フォーマット:
一般的な方法でデジタル出力の表現、および終了時に0を含め、すべての有効ビットが保持されることを確実にすることにより行の各テストケースについて。

入力サンプル1:。
+ 1.23400E-03

出力サンプル1:
0.00123400

入力サンプル2:
-1.2E + 10

出力サンプル2:
-12000000000

問題解決のアイデア:カジュアルな作業に必要な出力に応じて

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String line=br.readLine();
        int a=line.indexOf("E");
        char x=line.charAt(0);
        char y=line.charAt(a+1);
        int i=a+2;
        while(i<line.length() && line.charAt(i)=='0'){
            i++;
        }
        int b=0;
        if(i>=line.length()){
        }else{
            b=Integer.parseInt(line.substring(i,line.length()));
        }
        String z=line.substring(1,a);
        StringBuilder zs=new StringBuilder(z);
        int c=z.indexOf('.');
        int d=z.length()-c-1;
        StringBuilder sb=new StringBuilder("");
        int j=0;
        while(j<z.length()){
            if(j!=c){
                sb.append(z.charAt(j));
            }
            j++;
        }
        StringBuilder result=new StringBuilder("");
        if(x=='-'){
            result.append("-");
        }else{
        }
        if(y=='-'){
            if(b!=0){
                result.append("0.");
                for(int k=1;k<b;k++){
                    result.append("0");
                }
                result.append(sb);
            }else{
                result.append(z);
            }
        }else{
            if(d<=b){
                result.append(sb);
                for(int k=d;k<b;k++){
                    result.append("0");
                }
            }else{
                zs.insert(z.indexOf(".")+b+1,".");
                zs.deleteCharAt(z.indexOf("."));
                result.append(zs);
            }
        }
        System.out.println(result);
    }
}
公開された24元の記事 ウォンの賞賛0 ビュー364

おすすめ

転載: blog.csdn.net/qq_23079139/article/details/104091508