首页 > 解决方案 > 使用扫描仪时如何验证输入?

问题描述

当我输入一个整数作为高数时,它会起作用,并且当我输入一个字符时验证会起作用,因为它会显示错误消息。

但是,我不能让它为低数字做同样的事情?

我不确定我做错了什么。

这是完整的代码

package client;
import static com.sun.org.apache.xerces.internal.util.FeatureState.is;
import static com.sun.org.apache.xerces.internal.util.PropertyState.is;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.Scanner;

public class Client {

  public static int Highnumber;   
  public static int Lownumber;
    public static void main(String[] args) {
         String hostName = "localhost"; 
        int hostPort = 4444; 
        if (args.length != 0) {
            if (args[0] != null) {
                hostName = args[0]; 
            }
            if (args[1] != null) {
                hostPort = Integer.parseInt(args[1]); 
            }
        }
        System.out.println("Trying to Connect to Server");

        try (Socket serverSocket = new Socket(hostName, hostPort);
                DataOutputStream os = new DataOutputStream(new BufferedOutputStream(serverSocket.getOutputStream()));
                BufferedReader is = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()))) {
            Scanner ScannerInput = new Scanner(System.in);  
            System.out.println("Enter High Number -");
        Integer highnumber = null;
        while (highnumber == null) {
            try {
                highnumber = Integer.parseInt(ScannerInput.next());
            } catch (NumberFormatException e) {
                System.out.println("ERROR, ENTER AN INTEGER:");
            }
        }
        Integer lownumber = null;
        System.out.println("Enter low Number -");
        while (lownumber == null) {
            try {
                Integer number = Integer.parseInt(ScannerInput.next());
                if (number <= highnumber) {
                    lownumber = number;
                }else{
                    System.out.println("ERROR,needs to be lower");
                 }

            } catch (NumberFormatException e) {
                System.out.println("ERROR, ENTER AN INTEGER:");
            }
        }

        Highnumber=highnumber;
        Lownumber=lownumber ;

在以下部分中出现错误:

    }
           int numberToFind = Integer.parseInt(is.readLine());           
            System.out.println("Target Number Set"  +  "\nStart Guessing!:");
            int Tries = 0; 
            int UserInput = 0;
        while (UserInput != numberToFind) {        
           UserInput = ScannerInput.nextInt();           
           os.writeInt(UserInput);
           os.flush();
           System.out.println(is.readLine()); 
           Tries++;            
       }
        System.out.println("Well Done! You found the number " + numberToFind + " in " + Tries  + " tries");  
        } catch (Exception e) {
            System.err.println("Exception:  " + e.getMessage());
        }
    }

标签: java

解决方案


好的,我做了一些重组,不必分层 while 循环

        //Scanner scannerInput = new Scanner(System.in);

        System.out.println("Enter High Number -");
        Integer highnumber = null;
        while (highnumber == null) {
            try {
                highnumber = Integer.parseInt(clientInput.next());
            } catch (NumberFormatException e) {
                System.out.println("ERROR, ENTER AN INTEGER:");
            }
        }
        Integer lownumber = null;
        System.out.println("Enter low Number -");
        while (lownumber == null) {
            try {
                Integer number = Integer.parseInt(clientInput.next());
                if (number <= highnumber) {
                    lownumber = number;
                }else{
                    System.out.println("ERROR,needs to be lower");
                 }

            } catch (NumberFormatException e) {
                System.out.println("ERROR, ENTER AN INTEGER:");
            }
        }

        Highnumber=highnumber;
        Lownumber=lownumber ;

    }

推荐阅读