有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java scanner提供的简单注册验证表单

我刚开始学习java,所以我被卡住了,我不知道如何修复这个错误。我被困在这里已经两天了。我正在制作一个验证注册表格。请解释我要做什么来修复这个错误,需要更多的建议或任何其他方法来开发一个类似这是大学作业的表格。 使用nextint、nextLine等进行表单开发,并为糟糕的英语表达歉意,我尽了最大努力解释问题,我在代码末尾提到错误,请检查

import java.util.Scanner;

public class Vali{

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter User Name :");
        String uname = s.nextLine();

        System.out.println("Enter Password :");
        String pass = s.nextLine();

        System.out.println("Enter Number :");
        if (s.hasNextInt()) {
            int numberr = s.nextInt() ; 
        } else {
            System.out.println("Please Enter The Number");
        }

        if (!uname.equals("") && !pass.equals("") && !numberr.equals("") ) {
             System.out.println("logged in");
        } else if(!uname.equals("")  && !numbe.equals("")) {
            System.out.println("fill the feild");
        } else {
            System.out.println("invalid");
        }
    }   
} 

我发现了这个错误,请引导我

Vali.java:23: error: cannot find symbol
    if (!uname.equals("") && !pass.equals("") && !numberr.equals("") ){
                                                  ^
  symbol:   variable numberr
  location: class Vali

共 (2) 个答案

  1. # 1 楼答案

    变量numberr在使用之前是在另一个if语句中创建的,因此如果没有设置它,就找不到它。而且numberr永远不能等于"",因为它是整数而不是字符串。要使代码正常工作,请这样编写:

    int numberr = 0;
    if (s.hasNextInt()) {
        numberr = s.nextInt() ; 
    } else {
        System.out.println("Please Enter The Number");
    }
    if (!uname.equals("") && !pass.equals("") && numberr != 0 ){
        System.out.println("logged in");
    }
    

    更好的方法是不要检查numberr的标准值是否为0,因为用户可能希望将其设置为0。因此,可以引入一个布尔值来确定是否设置了numberr。代码将如下所示:

    boolean b = false;
    int numberr = 0;
    if (s.hasNextInt()) {
        numberr = s.nextInt() ; 
        b = true;
    } else {
        System.out.println("Please Enter The Number");
    }
    if (!uname.equals("") && !pass.equals("") && b ){
        System.out.println("logged in");
    }
    

    我不知道你到底想达到什么目的,但是如果你想强迫用户输入一个数字,你可能想考虑使用循环,就像这样,那么你就不必检查是否设置了^ {CD1>},因为用户被迫设置它:

    while(!s.hasNextInt()) {
        System.out.println("Please Enter The Number");
    }
    int numberr = s.nextInt() ; 
    if (!uname.equals("") && !pass.equals("")){
        System.out.println("logged in");
    }
    
  2. # 2 楼答案

    更改如下:

    1-从if中声明数字

    2-使用==在if条件下比较int而不是equal方法

     public class Vali{
        public static void main(String[] args){
            int numberr = 0;
    
            Scanner s = new Scanner(System.in);
            System.out.println("Enter User Name :");
            String uname = s.nextLine();
    
            System.out.println("Enter Password :");
            String pass = s.nextLine();
    
    
            System.out.println("Enter Number :");
    
    if (s.hasNextInt()) {
            numberr = s.nextInt() ; 
        } else {
            System.out.println("Please Enter The Number");
    }
        if (!uname.equals("") && !pass.equals("") && !(numberr == {SOME_NUMBER}) ){
            System.out.println("logged in");
        }
            else if(!uname.equals("")  && !numbe.equals("")) {
                System.out.println("fill the feild");
            }
            else{
                System.out.println("invalid");
            }
        }   
        }