Java 如何接受3个字符值,将它们转换为int,添加它们,并根据总值打印出特定消息?
我正在尝试编写一个程序,让用户只输入3个字符串字符,如果模数除以5后为零,则该程序将被解锁。我正在尝试使用ascii将字母转换为int值,我也在尝试解决如何组合总数,检查余数是否为0,并打印出下面所需的消息 我想我对a-zA-Z的验证还可以,但我知道我正在做一些工作,将转换为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
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>