2016-03-31 7 views
-1

バイナリを10進数に変換するプログラムを作成するように割り当てられました。私はその部分を問題なく実行しましたが、ユーザがバイナリに入れるかどうかを確認する必要があります。それ以外の場合は、「やり直してください」と言わなければなりません。無限ループを使用することなく存在します。私は無限ループなしでそれをどうやって行うのか分かりません。今、あなたはいくつかのコードを掲載しましたことを、あなたはあなたの要件を読んで(理解)する必要がある、あなたはバイナリコードの検証と無限ループのないプログラムの繰り返し

import java.util.Scanner; 
 
class Quiz4 { 
 
    public static void main(String args[]){ 
 
     Scanner input = new Scanner(System.in); 
 
     System.out.print("Enter a binary number: "); 
 
     String binaryString =input.nextLine(); 
 
     System.out.println("Output: "+Integer.parseInt(binaryString,2)); 
 
    } 
 
}

+0

ここにコードを投稿してください。オフサイトの画像ではありません。 –

答えて

1

OKありがとうございました。

あなたの投稿を見て、具体的な要件は「無限ループ」を使用しないことです。条件付きループを使用することが許されていると解釈します。

だから、私は、私はあなたの要件を理解するであろうと仮定すると:

  1. ラップ既存のコードを行うに/ whileループ、あなたは実行の終わりに評価したいからです。
  2. キーボードから読み取るコードを書きます。
  3. キーボード入力が適切な場合は、上記のループを終了します(例:(!myvar.toLower().equals("y")))。

投稿コード&を自由に書き換えてください。必要に応じてこの回答を更新します。申し訳ありませんが、あなたのためのコードを書くことは、私の意見では、SOの精神とあなたの研究のために逆効果の両方に対してです。

ただし、問題を解決する別の方法は再帰です。あなたの先生が実際にを解決するように依頼している場合は、再帰によってこの問題が発生することを真剣に考えています。

0

この次の関数は、入力が1と0のみであることを確認するために使用できます。だから、

private static boolean hasOnly1sAnd0s(String s) { 
    for(int i = 0 ; i < s.length() ; i++) 
     // have character that is not 1 or 0 
     if(!(s.charAt(i)== '1' || s.charAt(i)== '0')) 
      return false; 

    return true; 
} 

は、ユーザーの入力を受け入れるために、このような何かを持っていると言う

public static void main(String args[]) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Enter a binary number: "); 

    // in contains a potential binary string 
    String in = scanner.nextLine(); 

    // first check to see if it is a binary string 
    boolean isBinaryString = hasOnly1sAnd0s(in); 

    // loop till user wants to keep trying again and enters invalid binary string 
    while (!isBinaryString) { 
     System.out.print("Try again? "); 

     // if 'y' or 'Y', let user input number, else break out of loop 
     char c = scanner.next(".").charAt(0); 
     if (!(c == 'y' || c == 'Y')) 
      break; 

     // take input 
     System.out.println("Enter a binary number: "); 
     in = scanner.next(); 

     // check if input is valid binary string 
     isBinaryString = hasOnly1sAnd0s(in); 
    } 

    // the string `in` contains a valid binary string iff isBinaryString == true 
    // otherwise, it is the case that user inputted `no` for "Try again" 
    if (isBinaryString) 
     System.out.println("Output: " + Integer.parseInt(in , 2)); 
} 

編集:私はこれは少しコードを思わ知っ

import java.util.Scanner; 
public class Hello { 
    public static void main(String[] args) { 
     ...... 
    } 

    private static boolean hasOnly1sAnd0s(String s) { 
     ...... 
    } 
} 

を(OPへのファイル構造を説明します) -ヘビー。しかし、私はあなたを助けることができましたか?

+0

私は大量のエラーを起こすことなくそれを自分のコードに実装する方法がわかりません。 –

+0

@MontyOsmanそれはあなたの 'main'の中に入るだけです。とにかく、私は自分の答えを更新しました。 –

+0

私はそれを 'System.out.println( "Output:" + Integer.parseInt(binaryString、2));の直後に置きます。それでも大量のエラーが発生する –

関連する問題