2016-06-20 7 views
-1

このコードは、あなたのPCが低すぎるか高すぎるかをPCに推測させますが、範囲が変更されていないようですここにコードを入力してください:なぜこれが動作しないのですか

int min = 1; 
int max = 100; 
Scanner i = new Scanner(System.in); 
System.out.println("whats the number"); 
int ans = i.nextInt(); 
int guess = (int)(Math.random()* 100 + 1); 
while(ans != guess) 
{ 
    System.out.println(guess); 
    System.out.println("is that number to high)1 or to low)2"); 
    int p = i.nextInt(); 
    if(p == 1) 
    { 
     if(guess < max) 
     { 
      max = guess; 
      guess = (int)(Math.random()*max + min); 
     } 
     else 
     { 
      guess = (int)(Math.random()*max + min); 
     } 
    } 
    if(p == 2) 
    { 
     if(guess > min) 
     { 
      min = guess; 
      guess = (int)(Math.random()*max + min); 
     } 
     else 
     { 
      guess = (int)(Math.random()*max + min); 
     } 
    } 
} 
System.out.println(guess + " is right"); 
+0

は私がプログラムを実行するとうまく –

+0

が機能していないものを定義する私は私の電話番号として50を選ぶと言う、その後PCは、75を推測し、私はそれがにあると言います高いそれは最大として75を設定する必要がありますし、それ以上のものを推測するべきではありませんが、問題は....それはより高いと思います –

+0

'行ごとにデバッグしよう ' – emotionlessbananas

答えて

0

guess変数の計算方法を変更する必要があると思います。

あなたは、最小から最大の間の数字を推測したいと思います。したがって、this strategyを使用することができます。あなた以下

guess = rand.nextInt((max - min) + 1) + min; 

完全なコードを見つけることができます。

import java.util.Random; 
import java.util.Scanner; 

public class NumbersTest { 

    public static void main(String[] args) { 

     int min = 1; 
     int max = 101; 
     Scanner i = new Scanner(System.in); 
     System.out.println("whats the number"); 
     int ans = i.nextInt(); 
     Random rand = new Random(); //NOTE 
     int guess = rand.nextInt((max - min) + 1) + min; //NOTE 
     while (ans != guess) { 
      System.out.println(guess); 
      System.out.println("is that number to high)1 or to low)2"); 
      int p = i.nextInt(); 
      if (p == 1) { 
       if (guess < max) { 
        max = guess; 
        guess = rand.nextInt((max - min) + 1) + min; //NOTE 
       } else { 
        guess = rand.nextInt((max - min) + 1) + min; //NOTE 
       } 
      } 
      if (p == 2) { 
       if (guess > min) { 
        min = guess; 
        guess = rand.nextInt((max - min) + 1) + min; //NOTE 
       } else { 
        guess = rand.nextInt((max - min) + 1) + min; //NOTE 
       } 
      } 
     } 
     System.out.println(guess + " is right"); 
    } 
} 
+0

ありがとうございます、私はこんなに騒がしいです –

+0

@ B.Stewartこの答えが役に立ったら、受け入れることを忘れないでください:) – CrazyJavaLearner

関連する問題