2012-03-31 7 views
1

私はパッケージについて学んでいます。私は別のパッケージに入っている2つのクラスを持っており、私の出力に問題があるようです。ここで別のパッケージを使用したプログラム出力

は、メインとクラスです: 私の二つの問題は、下の二つの部分であり、ここで「必要な文字列のテスト」と「文字列の選択テスト」

import myUtils.util.Console; 

public class ConsoleTestApp 
{ 
public static void main(String args[]) 
{ 
    // create the Console object 
    Console c = new Console(); 

    // display a welcome message 
    c.println("Welcome to the Console Tester application"); 
    c.println(); 

    // int 
    c.println("Int Test"); 
    int i = c.getIntWithinRange("Enter an integer between -100 and 100: ", -101, 101); 
    c.println(); 

    // double 
    c.println("Double Test"); 
    double d = c.getDoubleWithinRange("Enter any number between -100 and 100: ", -101, 101); 
    c.println(); 

    // required string 
    c.println("Required String Test"); 
    String s1 = c.getRequiredString("Enter your email address: "); 
    c.println(); 

    // string choice 
    c.println("String Choice Test"); 
    String s2 = c.getChoiceString("Select one (x/y): ", "x", "y"); 
    c.println(); 
} 
} 

は、彼らがアクセスしているクラスのコードです。

package myUtils.util; 
import java.util.Scanner; 

public class Console 
{   
Scanner sc = new Scanner(System.in); 

/******************************************************/ 
public void println() 
{  

} 

/******************************************************/ 
public void print(String s) 
{ 
    System.out.println(s); 
} 

/******************************************************/ 
public void println(String s) 
{ 
    System.out.println(s);  
} 

/*****************************************************/ 
public int getIntWithinRange (String prompt, int min, int max) 
{ 
    int i = 0; 
    boolean isValid = false; 
    while (isValid == false) 
    { 
     System.out.println(prompt); 
     if (sc.hasNextInt()) 
     {    
      i = sc.nextInt(); 
       if (i < min) 
       {      System.out.println 
        ("Error! Please enter an integer greater than -100"); 
       }     
       else if (i > max) 
       { 
        System.out.println ("Error! Please enter an integer less than 100"); 
       } 
       else 
        isValid = true; 
     } 
     else 
     { 
      System.out.println ("Error! Invalid number value"); 
      sc.nextLine(); 
     } 
    } 
    return i; 
} 

/*****************************************************/ 
public double getDoubleWithinRange (String prompt, double min, double max) 
{ 
    int d = 0 ; 
    boolean isValid = false; 
    while (isValid == false) 
    { 
     System.out.println(prompt); 
     if (sc.hasNextInt()) 
     {    
      d = sc.nextInt(); 
       if (d < min) 
       { 
        System.out.println ("Error! Please enter a number greater than -100"); 
       } 
       else if (d > max) 
       { 
        System.out.println ("Error! Please enter a number less than 100"); 
       } 
       else 
        isValid = true; 
     } 
     else 
     { 
      System.out.println("Error! Invalid number value"); 
      sc.nextLine(); 
     } 
    } 
    return d; 
} 

/*****************************************************/ 
public String getRequiredString(String prompt) 
{ 
    String R = ""; 
    boolean isValid = false; 
    while (isValid == false) 
    { 
     System.out.print(prompt); 
     R = sc.nextLine(); 
     if (R.equals("")) 
     { 
      System.out.println("Error! This entry is required. Try again."); 
     } 
     else 
     { 
      isValid = true; 
     } 
    } 
    return R; 
} 

public String getChoiceString (String prompt, String s1, String s2) 
{ 
    String s = ""; 
    boolean isvalid = false; 
    while (isvalid == false); 
    {   
     s = this.getChoiceString(prompt, s1, s2); 
     System.out.println(s); 
     s = sc.nextLine(); 
     if (!s.equalsIgnoreCase(s1) && !s.equalsIgnoreCase(s2)) 
     { 
      System.out.println("Error! Entry must be '"+ 
       s1 +"', '"+ s2 +"', or '."+ "Try again.");  
     } 
     else 
     { 
      isvalid = true; 
     } 
    } 
    return s; 
}  

public int getInt(String prompt) 
{ 
    return 0; 
} 
} 

(これがメインの最上部に輸入されたConsoleクラスである)私はgetRequiredStringを持っています問題は、私はこれが原因となっている

R = sc.nextLine(); 

言うのコードの行を持っていますユーザーが何も入力しなかったと思うので、私の出力は私のエラーメッセージを出力します。私は単純に変更すると

R = sc.next(); 

コードは、ユーザーが何かを入力することはできません。私はこれを解決するために何をすべきか分からない。

私がgetChoiceStringで持っている問題は、プログラムが何も印刷していないことです。コードのセクションで私のプロンプトやその他の要素が表示されないようです。

私は新しく、これは宿題なので、ヒント、手がかり、またはこれを通って私を歩く助けに感謝します。

+0

'Console'クラスの' getDoubleWithinRange'メソッドと 'getIntWithinRange'メソッドを共有できますか? –

+0

@Korhan Ozturk確かに今編集を行います。 –

+0

@KorhanÖztürk質問を編集してコンソールクラスに戻しました。あなたは今それらを見るべきです。 –

答えて

2

Gotcha! while文の後にセミコロンを置くと、プログラムが停止します。

while (isvalid == false); <--- 
{ 
    .... 
} 

私はそれを削除し、getChoiceString方法が不必要に自分自身を呼び出すために、コードが無限ループに入ることに気付きました。したがって、私もそれを編集しました(あなたの再帰呼び出しをコメントアウトしました)、それは今働いているようです!次のことを試してみてください。

public String getChoiceString(String prompt, String s1, String s2) 
{ 

    String s = ""; 
    boolean isvalid = false; 
    while (true) 
    { 
     if(isvalid == true) 
     { 
      break; 
     } 
     //s = this.getChoiceString(prompt, s1, s2); 
     //System.out.println(s); 
     System.out.println("Enter your String: "); 
     s = sc.nextLine(); 
     if (!s.equalsIgnoreCase(s1) && !s.equalsIgnoreCase(s2)) 
     { 
      System.out.println("Error! Entry must be '"+ 
       s1 +"', '"+ s2 +"', or '."+ "Try again."); 


     } 
     else 
     { 
      isvalid = true; 
     } 
    } 
    return s; 

} 

EDIT:あなたのgetRequiredString方法でも、適切にあなたのプログラムを動作させるために、代わりにR = sc.nextLine();R = sc.next();を使用しています。以下を確認してください:

System.out.print(prompt); 
R = sc.next(); 
System.out.println("Email address: " + R.toString()); 
if (R.equals("")) 
{ 
    System.out.println("Error! This entry is required. Try again."); 
} 
else 
{ 
    isValid = true; 
} 
+0

ありがとう!他の問題について私ができることはありますか? getRequiredStringのnextLine? –

+0

私はそれも修正したと思います。今ユーザは文字列を入力することができ、プログラムはユーザ入力がs1またはs2に等しくなければならないというエラーメッセージをチェックして出力する。自分で試してみてください –

+0

ああ、私はgetRequiredStringMethodについて話していました。私はそれが適切にコーディングされていると思うが、私のプログラムがそのメソッドの出力を表示する何らかの理由で、ユーザーは単にEnterキーを押して何も入力しなかったと仮定している。 –

関連する問題