0

この質問が本当に明白である場合は申し訳ありませんが、私はすべてを試しました。

数値のパーセンテージを計算する電卓を作成しようとしています。

しかし、このコードを使用すると、出力に 0 が出力され続けます。

import java.io.*;

class pCalc {
     public static void main(String args[])
     {
          InputStreamReader istream = new InputStreamReader(System.in) ;
          BufferedReader bufRead = new BufferedReader(istream) ;

          System.out.println("Hello...");

          try {
               System.out.println("Please Enter In The Percentage You Want To Find (e.g 25): ");
               String rpercent = bufRead.readLine();

               System.out.println("Please Enter In The Number You Wish To Find The Percentage Of (e.g 200): ");
               String rnumber = bufRead.readLine();


               int repercent = Integer.parseInt(rpercent);
               int number = Integer.parseInt(rnumber);
               int percent = repercent / 100;

               int awnswer = number * percent ;

               System.out.println("Percent is: " + percent);
               System.out.println("Awnswer is: " + awnswer);
          }
          catch (IOException err) {
               System.out.println("Error reading line");
          }
          catch(NumberFormatException err) {
               System.out.println("Error Converting Number");
          }         
     }
}
4

5 に答える 5

2

あなたの問題はここにあります:

       int repercent = Integer.parseInt(rpercent);
       int number = Integer.parseInt(rnumber);
       int percent = repercent / 100;

整数除算の結果は最終的に整数になるため、たとえば計算で が得られる0.2場合は に変更され0ます。

そのようなことをすると、それが修正されるはずです:

   double repercent = Double.parseDouble(rpercent);
   double number = Double.parseDouble(rnumber);
   double percent = repercent / 100.0;
于 2012-04-30T09:56:51.457 に答える
1

intは自然数です(または負です...何とか、int整数です)、0または1の間の値にすることはできません。次のようなものを見たい場合はfloat、 orを使用する必要がありますdouble0,25

于 2012-04-30T09:58:05.460 に答える
1

floatの代わりに使用してみてくださいint

float repercent = Float.parseFloat(rpercent);
float number = Float.parseFloat(rnumber);
float percent = repercent / 100;
于 2012-04-30T09:59:05.590 に答える
0

私はあなたのコードを少しきれいにしました。他の人が指摘したように、主な問題は 100 による早すぎる整数除算です。余分な例外処理が削除され、デフォルトの例外ハンドラーによって出力される完全なスタック トレースがマスクされます。

package test;

import static java.lang.Integer.parseInt;

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

public class Test {
  public static void main(String args[]) throws Exception {
    final BufferedReader bufRead = new BufferedReader(new InputStreamReader(System.in)) ;
    System.out.println("Hello...");
    System.out.println("Please Enter In The Percentage You Want To Find (e.g 25): ");
    final int percent = parseInt(bufRead.readLine());
    System.out.println(
        "Please Enter In The Number You Wish To Find The Percentage Of (e.g 200): ");
    final int number = parseInt(bufRead.readLine());
    final int answer = number * percent / 100; // or use a floating-point type here
    System.out.println("Percent is: " + percent);
    System.out.println("Answer is: " + answer);
  }
}
于 2012-04-30T10:03:05.290 に答える
0

int percent = repercent / 100;動作しません。またはデータ型を使用します。floatdouble

于 2012-04-30T09:57:39.930 に答える