簡體   English   中英

錯誤消息指出Java的構造函數放置不正確

[英]Error message stating misplaced constructors for java

所以我做了一些修改,但現在又出現了“完成while陳述?

/* This is a program in that can figure out a number chosen by a human user
*/
import java.util.Random;
import java.util.Scanner;

public class NumberGuesser {
    public static void main(String[] args) {
        boolean playAgain = false;

        do {
            playOneGame();
            playAgain = shouldPlayAgain();
        } while (playAgain);
    }

    public static void playOneGame() {
        int continueGuessing = 0;
        int guess = 50;
        int low = 1;
        int high = 100; 
        Scanner keyboard = new Scanner(System.in);
        char response;  

        System.out.println("Guess a number between 1 and 100.\n");
        do {
            guess = getMidpoint (low, high);
            response = getUserResponseToGuess(guess);
            if (response == 'h') {
                high = guess;
                continueGuessing = 1;
            } else if (response == 'l') {
                low = guess;
                continueGuessing = 0;
            }
            while(response != 'h' && response != 'l')
        }
    }

    /*get midpoint method       
    */
    public static int getMidpoint(int high, int low);
        int range = high- low;
        Random generator = new Random();

        if (range >0){
            int midpoint = generator.nextInt(range) + low +1;
            return midpoint;
        } else
            return guess;

    public static char getUserResponseToGuess(int guess) {
        Scanner keyboard = new Scanner(System.in);
        String input;
        char response;

        do {
            System.out.println("Is it " + guess + "? (h/l/c): ");
            input = keyboard.nextLine();
            response = input.charAt(0);
        } while (response != 'h' && response != 'l' && response != 'c');
        return response;
    }

    static boolean shouldPlayAgain() {
        Scanner keyboard = new Scanner (System.in);
        String input;
        char response;

        do {
            System.out.println("Do you want to play again? (y/n); ");
            input = keyboard.nextLine();
            response = input.charAt(0);
        } while (response != 'y' && response != 'n')

        if (response == 'y') {
            return true;
        } else
            return false;
    }
}   

所以我要創建一個程序,可以找出人類用戶選擇的數字。 人類用戶會想到一個介於1到100之間的數字。程序將進行猜測,並且用戶將告訴程序猜測更高或更低。

該程序的示例運行可能如下所示:

  Guess a number between 1 and 100.
  Is it 50?  (h/l/c): h
  Is it 75?  (h/l/c): h
  Is it 87?  (h/l/c): l  
  Is it 81?  (h/l/c): c
  Great! Do you want to play again? (y/n): y
  Guess a number between 1 and 100.
  Is it 50?  (h/l/c): l
  Is it 25?  (h/l/c): h
  Is it 37?  (h/l/c): c
  Great! Do you want to play again? (y/n): n

到目前為止,我一直在嘗試給我帶來許多錯誤:

 /* This is a program in that can figure out a number chosen by a human user
 */
import java.util.Random;
import java.util.Scanner;

public class NumberGuesser {
public static void main(String[] args) {
    boolean playAgain = false;
    do{
        playOneGame();
        playAgain = shouldPlayAgain();
    }while (playAgain);
}
/*get midpoint method       
 */

public static void playOneGame() {
    private int continueGuessing = 0;
    private int guess = 50,
                low = 1,
                high = 100; 
    Scanner keyboard = new Scanner(System.in);
    char    response;   
    System.out.println("Guess a number between 1 and 100.\n");
    do{
        guess = getMidpoint(low, high, guess);
        response = getUserResponseToGuess(guess);

        if (response == 'h') {
            high = guess;
            continueGuessing = 1;
        }

        else if (response == 'l'){
            low = guess;
            continueGuessing = 0;
        }
    }

    while (continueGuessing == 1);


 public static int getMidpoint;
    int range = high- low;
    Random generator = new Random();

    if (range >0){
        int midpoint = generator.nextInt(range) + low +1;
        return midpoint;
    }

    else
        return guess;


public static char getUserResponseToGuess(int guess){
    Scanner keyboard = new Scanner(System.in);
    String input;
    char response;

    do {
        System.out.println("Is it " + guess + "? (h/l/c): ");
        input = keyboard.nextLine();
        response = input.charAt(0);
    }
    while (response != 'h' && response != 'l' && response != 'c');

    return response;
}

static boolean shouldPlayAgain() {
    Scanner keyboard = new Scanner (System.in);
    String input;
    char response;

    do{
        System.out.println("Do you want to play again? (y/n); ");
        input = keyboard.nextLine();
        response = input.charAt(0);
    }
    while (response != 'y' && response != 'n');

    if (response == 'y') {
        return true;
    }
    else return false;

    }
}   

請幫忙!

Java希望do-while語句如下所示:

do {
    ... statements
}
while (some test);

這就是您在多個地點所擁有的。 但是在一個地方,這里:

   do {
        guess = getMidpoint (low, high);
        response = getUserResponseToGuess(guess);
        if (response == 'h') {
            high = guess;
            continueGuessing = 1;
        } else if (response == 'l') {
            low = guess;
            continueGuessing = 0;
        }
        while(response != 'h' && response != 'l')
    } // <-- move this up to above the while

右括號在錯誤的位置,需要先於一會兒。

當然,getMidpoint()也需要大括號和一個參數列表。 public static int getMidpoint; 是用於類變量的語法(不能在方法中聲明)。

// added arguments, opening brace
public static int getMidpoint(int low, int high, int guess) { 
    int range = high- low;
    Random generator = new Random();

    if (range >0){
        int midpoint = generator.nextInt(range) + low +1;
        return midpoint;
    }

    else
        return guess;
} // added closing brace here

我的印象是,這是您已經知道的東西,您只是沒有養成防止錯誤蔓延的工作習慣。建議您以一致的方式設置代碼格式並在匹配對中引入控件結構的注釋是不錯的建議。 如果您編寫的代碼很小,可以隨時嘗試,而不必一次輸入所有內容,那么這也將有所幫助,因為一次遇到所有錯誤可能會令人不知所措。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM