0

現在、特定の数値の累乗を計算するプログラムに取り組んでいます。制限数は 1 ~ 9 です。私のコードは以下に掲載されています。次の問題があります。

  1. プログラムを実行するたびに、正しい答えが出力されません。

  2. アプリケーションが X の Y 乗を計算するようにコードを変更したいと考えています。ここで、X と Y は 1 から 9 (9 を含む) の範囲の整数にすることができます。ユーザーが無効な値を入力した場合、プログラムはユーザーに再度入力を求める必要があります。ユーザーが基数と指数の値の入力を完了すると、プログラムは結果を出力します。

このタスクの条件は、ループを使用して、いくつかの乗算を実行して結果を計算する必要があることです。結果を計算するメソッドや API を使用することは許可されていません。解決策を考え出すのを手伝ってください。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package exponent;
//import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int b,e;

    System.out.println("Enter the base");
    b = Integer.parseInt(br.readLine());
    System.out.println("Enter the power");
    e = Integer.parseInt(br.readLine());
    int t = 1;
    for(int i = 1;i <= e; i++);
    {
        t=t*b;
    }
    System.out.println(t);

    }
    // TODO code application logic here
}
4

4 に答える 4

6

まず、for ループの後にセミコロンがあってはなりません。

for(int i=1;i<=e; i++ )
        {
            t=t*b;
        }

単純な入力テストは、次のようなものです。

public boolean testInput(int e)
{
if(e>9||e<1)//where e is the inputted number
{
return false
}
else 
{
return true;
}

}

次に、次のように使用します。

  boolean valid = false;
  while(valid!=true)
  {
  e = Integer.parseInt(br.readLine());
  if(testInput(e)==false)
  {
  System.out.println("Please enter a number between 1 and 9")
  continue;
  }
  else
  {
  valid = true;
  }
  }
于 2013-11-14T17:48:25.050 に答える
0

最初の部分では、ループの宣言の後にセミコロンを配置したために発生しています。これは、Java がそのセミコロンにループするだけで、それ以上のことはありません。セミコロンを削除すると、ループが機能するはずです。ただし、2 番目の部分については、以下のコードに示すように、inputcheck メソッドを追加するだけです。

import java.io.*;
public class abc {
public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int b, e;
    System.out.println("Enter the base");
    b = check(Integer.parseInt(br.readLine()));
    System.out.println("Enter the power");
    e = check(Integer.parseInt(br.readLine()));
    int t = 1;
    for (int i = 1; i <= e; i++); {
        t = t * b;
    }
    System.out.println(t);
}

private static int check(int x) {
    while (x < 1 || x > 10)
        x = Integer.parseInt(br.readLine());
    return x;
}
于 2013-11-14T18:36:10.383 に答える
0

Remove semi colon from for-loop

From

 for(int i=1;i<=e; i++ );

to

 for(int i=1;i<=e; i++ )
于 2013-11-14T18:02:35.227 に答える