Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何接受3个字符值,将它们转换为int,添加它们,并根据总值打印出特定消息?_Java - Fatal编程技术网

Java 如何接受3个字符值,将它们转换为int,添加它们,并根据总值打印出特定消息?

Java 如何接受3个字符值,将它们转换为int,添加它们,并根据总值打印出特定消息?,java,Java,我正在尝试编写一个程序,让用户只输入3个字符串字符,如果模数除以5后为零,则该程序将被解锁。我正在尝试使用ascii将字母转换为int值,我也在尝试解决如何组合总数,检查余数是否为0,并打印出下面所需的消息 我想我对a-zA-Z的验证还可以,但我知道我正在做一些工作,将转换为int值,并将密码解锁消息打印到我的代码中 我肯定有很多错误,我道歉 public static void main(String[] args) { int total=0; Scanner

我正在尝试编写一个程序,让用户只输入3个字符串字符,如果模数除以5后为零,则该程序将被解锁。我正在尝试使用ascii将字母转换为int值,我也在尝试解决如何组合总数,检查余数是否为0,并打印出下面所需的消息

我想我对a-zA-Z的验证还可以,但我知道我正在做一些工作,将转换为int值,并将密码解锁消息打印到我的代码中

我肯定有很多错误,我道歉

public static void main(String[] args) {
        int total=0;
        Scanner scnObj = new Scanner(System.in);
        System.out.println("enter 3 letters");
        String input1 = null;
        char[] arr=input1.toCharArray(); 
        for(int i=0;i<arr.length;i++)
        {
            int ascii=(int)arr[i];
            if(ascii>=97&&ascii<=122)
            { // 
                total=total+ascii-96; 
            } 
            else if(ascii>=65&&ascii<=90)
            {
                total=total+ascii+36;  
            }

        }

        do {
            input1 = scnObj.next();

            if ((!Pattern.compile("[a-zA-Z]{1}").matcher(input1).matches())) {
                System.out.println("Invalid entry, please try again.");
            }
        } while (!Pattern.compile("[a-zA-Z]{1}").matcher(input1).matches());

        System.out.println("enter 2nd letter");
        String input2;
        do {
            input2 = scnObj.next();
            if ((!Pattern.compile("[a-zA-Z]{1}").matcher(input2).matches())) {
                System.out.println("Invalid entry, please try again.");
            }
        } while (!Pattern.compile("[a-zA-Z]{1}").matcher(input2).matches());

        System.out.println("Please enter the 3rd letter");
        String input3;
        do {
            input3 = scnObj.next();
            if ((!Pattern.compile("[a-zA-Z]{1}").matcher(input3).matches())) {
                System.out.println("Invalid entry, please try again");
            }
        } while (!Pattern.compile("[a-zA-Z]{1}").matcher(input3).matches());

        total= input1 += input2 += input3;
        if (total%5 == 0) {
            System.out.println("Password unlocked");
            else {
                System.out.println("Incorrect password");
            }   

        }
    }
}
publicstaticvoidmain(字符串[]args){
int-total=0;
扫描仪scnObj=新扫描仪(System.in);
System.out.println(“输入3个字母”);
字符串input1=null;
char[]arr=input1.toCharArray();

对于(inti=0;i=97&&ascii=65&&ascii您的总体想法是正确的,但是有几件事情是错误的,还有几件事情可以做得更好

  • char[]arr=input1.tocharray();
    。这将始终引发
    NullPointerException
    ,因为此时
    input1
    字符串仍然是
    null

  • 在从控制台读取字符串后,应该执行向总数中添加内容的循环

  • 以下是更新的代码:

    import java.util.Scanner;
    import java.util.regex.Pattern;
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println("Enter 3 letters");
    
            Scanner scanner = new Scanner(System.in);
            Pattern pattern = Pattern.compile("^[a-zA-Z]$");
    
            int total = 0;
    
            for (int i = 0; i < 3; i++) {
                String input = scanner.nextLine();
    
                while (!pattern.matcher(input).matches()) {
                    System.out.println("You must enter a letter");
                    input = scanner.nextLine();
                }
    
                int letter = input.charAt(0);
    
                if (letter >= 97 && letter <= 122) {
                    total += letter - 96;
                } else if (letter >= 65 && letter <= 90) {
                    total += letter + 36;
                }
            }
    
            if (total % 5 == 0) {
                System.out.println("Password unlocked");
            } else {
                System.out.println("Incorrect password");
            }
        }
    }
    
    import java.util.Scanner;
    导入java.util.regex.Pattern;
    公共班机{
    公共静态void main(字符串[]args){
    System.out.println(“输入3个字母”);
    扫描仪=新的扫描仪(System.in);
    Pattern=Pattern.compile(“^[a-zA-Z]$”);
    int-total=0;
    对于(int i=0;i<3;i++){
    字符串输入=scanner.nextLine();
    而(!pattern.matcher(input.matches()){
    System.out.println(“您必须输入字母”);
    输入=scanner.nextLine();
    }
    int字母=输入字符(0);
    
    如果(letter>=97&&letter=65&&letter将正则表达式模式传递给
    扫描仪。next()
    方法仅接受有效输入。运行循环以收集3个输入

    public static void main(String[] args) {
    
        Scanner scnObj = new Scanner(System.in);
        System.out.println("enter 3 letters");
        int sum = 0;
        int count = 0;
        String input;
        do {
            try {
                System.out.println("Enter letter no " + (count + 1));
                input = scnObj.next("[a-zA-Z]");
                sum += input.charAt(0);
                count++;
            } catch (InputMismatchException ime) {
                scnObj.next();
                System.out.println("Invalid entry, please try again.");
            }
        } while (count < 3);
    
        if (sum % 5 == 0) {
            System.out.println("Password unlocked");
        } else {
            System.out.println("Incorrect password");
        }
    
    }
    
    publicstaticvoidmain(字符串[]args){
    扫描仪scnObj=新扫描仪(System.in);
    System.out.println(“输入3个字母”);
    整数和=0;
    整数计数=0;
    字符串输入;
    做{
    试一试{
    System.out.println(“输入字母编号”+(计数+1));
    输入=scnObj.next(“[a-zA-Z]”);
    总和+=输入字符(0);
    计数++;
    }捕获(输入不匹配异常输入法){
    scnObj.next();
    System.out.println(“无效条目,请重试。”);
    }
    }而(计数<3);
    如果(总和%5==0){
    System.out.println(“密码解锁”);
    }否则{
    System.out.println(“不正确的密码”);
    }
    }
    
    删除您未使用的第一部分代码(ASCII代码)。在第二部分中,请尝试此
    total=((int)input1.charAt(0))+((int)input1.charAt(0))+((int)input1.charAt(0));
    抱歉@Tolik Pylypchuk我似乎在您的代码中遇到了一个循环错误。它一直在说“您必须输入3个字母”@Nexus_Valentine您输入的字母是什么?字母表中的任何字母都会分别向用户请求3次,接受大写或小写。此实现只向用户请求一次整个字符串。因此,请尝试输入
    aaa
    ,然后输入。如果您确实需要向用户请求1个字母3次,则我将编辑我的answ呃,我很抱歉,我确实需要特别要求用户输入1个字母3次,并收集输入信息等。我会给你积分的。别担心,哈哈,有什么错误?我看到以下输出。
    输入3个字母输入1个字母1无效输入,请重试。输入1个字母s输入2个字母d输入3个字母f密码不正确de>