0

プログラムでユーザー入力を文字列として取得し、それが「はい」または「いいえ」に等しいかどうかを確認し、どちらにも等しくない場合は「不正なエントリ」を表示することができません。「はい」または「いいえ」を入力しても、常に「間違ったエントリ」と表示されます。いくつかの異なるタイプの if と do/while を試しましたが、うまくいかないようです:

クラスファイル:

import java.util.Scanner;

public class PhysicsProblem
{
private double vI; // initial velocity  
private double vF; // final velocity    
private double t;  // time 
private double deltaX;  // change in the x value

//Make sure to add acceleration
public PhysicsProblem (double vI, double vF, double t, double deltaX) 
{
    this.vI = vI;
    this.vF = vF;
    this.t = t;
    this.deltaX = deltaX;   
}

public void setVi(String strVi)
{
    while (!(strVi.equals("no") || strVi.equals("yes")));
    {
        System.out.println("incorrect entry");  
    }
    if (strVi.equals("yes"))
    {
        System.out.println("Enter the initial velocity: ");
        vI = new Scanner(System.in).nextDouble();
    }
    if (strVi.equals("no"))
    {
        System.out.println("The program is assuming you want to solve" +
                            "for intial velocity");
    }
}

プログラム:

java.util.Scanner をインポートします。

public class PhysicsProblemSolver
{
public static void main (String[] args)
{
    double vI = 0;
    double vF = 0;
    double t = 0;
    double deltaX = 0;

    Scanner scan = new Scanner(System.in);
    PhysicsProblem problem1 = new PhysicsProblem (vI, vF, t, deltaX);

    // Checks to see if initial velocity is given
    System.out.println("Do you know the initial velocity? (Type 'yes' or 'no')");
    String strVi = scan.next(); 
    problem1.setVi(strVi);

不完全なプログラムのように見えることはわかっていますが、実際はそうですが、この 1 つのセクションで助けが必要だったので、不要な部分を含めないようにしました。紛らわしくてすみません!

4

3 に答える 3

0

メイン自体でテストを行うことができます。

       Scanner sc = new Scanner(System.in);
       String input;
        do{
            System.out.println("enter valid input");
        input=sc.next();            
       }while(!(input.equals("yes") || input.equals("no")));

次に、入力を関数に渡すだけです。

そこで不要なチェックを外します。他の人がその無限ループ(デッドロック)に言及したように。

while (!(strVi.equals("no") || strVi.equals("yes")));
于 2013-06-01T15:50:37.427 に答える