在Java中查找数字命理

在Java中查找数字命理,java,arrays,2d,Java,Arrays,2d,所以问题是: 编写一个程序来查找给定名称的数值。 注:将数字和对应字符存储在二维数组(2*26)中。给定的名称应始终大写,否则名称无效。检查有效名称,如果名称无效,则打印消息“无效名称”。提供的名称中不应有任何空格 例如: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 8 3 5 1 1 2 3 4 5 7 8 1 2 3 4 6 6 6 5 1 7 示例输入1: 输入您的姓名: 苏达 样本输出1: 你的命理是:19

所以问题是:
编写一个程序来查找给定名称的数值。
注:将数字和对应字符存储在二维数组(2*26)中。给定的名称应始终大写,否则名称无效。检查有效名称,如果名称无效,则打印消息“无效名称”。提供的名称中不应有任何空格

例如:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 2 3 4 5 8 3 5 1 1 2 3 4 5 7 8 1 2 3 4 6 6 6 5 1 7
示例输入1:
输入您的姓名:
苏达
样本输出1:
你的命理是:19
样本输入2:
输入您的姓名:
基兰
样本输出2:
无效名称
样本输入3:
输入您的姓名:
ANI34
样本输出3:
无效名称
“我正在使用int 2d数组存储值。”

int[]arr={{65,1},{66,2},{67,3},{68,4},{69,5},{70,8},
{71,3},{72,5},{73,1},{74,1},{75,2},{76,3},
{77,4},{78,5},{79,7},{80,8},{81,1},{82,2},
{83,3},{84,4},{85,6},{86,6},{87,6},{88,5},{89,1},{90,7}};
但是现在我不知道如何提取字符ASCII值并得到结果。
有人能帮我吗?

提前感谢

因为您在评论中提到字母有随机数字值,并且您只需要大写字母,所以您可以创建一个映射,其中只有大写字母作为
,它们的随机值作为
。之后,您可以使用地图检查每个单词的每个字符,以确保只有大写字母。下面的代码将打印结果,以便您可以根据需要将它们存储在数组或任何其他容器中

public static void main(String[] args) {
    // map which contains only upper case letters with random values
    Map<Character, Integer> map = new HashMap<>();
    for (int i = 0; i < 26; ++i){
        // upper case A ascii value is 65, we start from 65
        map.put((char)(65 + i), (int) (Math.random() * (10)));
    }

    // input values
    String[] inputs = {"SUDHA", "kiran", "ANI34"};
    boolean valid;
    int sum;

    for (int j = 0; j < inputs.length; ++j){
        sum = 0;
        valid = true;
        for (int i = 0; i < inputs[j].length(); ++i){
            // if char is not in map, it means that it is not uppercase letter
            if (!map.containsKey(inputs[j].charAt(i))){
                System.out.println("Sample output " + (j + 1) + ": Invalid Name: " + inputs[j]);
                valid = false;
                break;
            }else{
                sum += map.get(inputs[j].charAt(i));
            }
        }
        if (valid){
            System.out.println("Sample output " + (j + 1) + ": Your numerology no is: " + sum);
        }
    }
}
publicstaticvoidmain(字符串[]args){
//仅包含随机值的大写字母的映射
Map Map=newhashmap();
对于(int i=0;i<26;++i){
//大写ascii值是65,我们从65开始
map.put((char)(65+i),(int)(Math.random()*(10));
}
//输入值
字符串[]输入={“SUDHA”、“kiran”、“ANI34”};
布尔有效;
整数和;
对于(int j=0;j
嘿,你可以使用哈希映射 这就是我所做的

/* package codechef; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
public class Codechef
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        Scanner sc = new Scanner (System.in);
        HashMap<Character, Integer> hmap = new HashMap<Character, Integer>();//HashMap
        hmap.put('A',1); ///VALUES
        hmap.put('B',2);
        hmap.put('C',3);
        hmap.put('D',4);
        hmap.put('E',5);
        hmap.put('F',8);
        hmap.put('G',3);
        hmap.put('H',5);
        hmap.put('I',1);
        hmap.put('J',1);
        hmap.put('K',2);
        hmap.put('L',3);
        hmap.put('M',4);
        hmap.put('N',5);
        hmap.put('O',7);
        hmap.put('P',8);
        hmap.put('Q',1);
        hmap.put('R',2);
        hmap.put('S',3);
        hmap.put('T',4);
        hmap.put('U',6);
        hmap.put('V',6);
        hmap.put('W',6);
        hmap.put('X',5);
        hmap.put('Y',1);
        hmap.put('Z',7);
        
        System.out.println("Enter Name");
        String str = sc.next();
        /**
         * if(!str.isUpperCase())
         * {
         *   System.out.println("INVALID NAME");
         *    System.exit(0);
         * }
         */
         
        str=str.toUpperCase();
        long sum=0;
        for(int i=0;i<str.length();i++)
        {
            char ch = str.charAt(i);
            sum+=hmap.get(ch);
        }
        System.out.println(sum);
    }
}
/*包编解码器;//不要放置包名*/
导入java.util.*;
导入java.lang.*;
导入java.io.*;
/*只有当类是公共的时,类的名称才必须是“Main”*/
公共类Codechef
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
//你的密码在这里
扫描仪sc=新的扫描仪(System.in);
HashMap hmap=new HashMap();//HashMap
hmap.put('A',1);///值
hmap.put('B',2);
hmap.put('C',3);
hmap.put('D',4);
hmap.put('E',5);
hmap.put('F',8);
hmap.put('G',3);
hmap.put('H',5);
hmap.put('I',1);
hmap.put('J',1);
hmap.put('K',2);
hmap.put('L',3);
hmap.put('M',4);
hmap.put('N',5);
hmap.put('O',7);
hmap.put('P',8);
hmap.put('Q',1);
hmap.put('R',2);
hmap.put('S',3);
hmap.put('T',4);
hmap.put('U',6);
hmap.put('V',6);
hmap.put('W',6);
hmap.put('X',5);
hmap.put('Y',1);
hmap.put('Z',7);
System.out.println(“输入名称”);
字符串str=sc.next();
/**
*如果(!str.isUpperCase())
* {
*System.out.println(“无效名称”);
*系统出口(0);
* }
*/
str=str.toUpperCase();
长和=0;

对于(int i=0;i您可以尝试:-



System.out.println(“输入您的姓名:”)


String name=sc.nextLine();
字符串模式=“[A-Z]+”;
if(name.matches(模式)){
智力得分=0;

对于(int i=0;i
“BAR.”字符(1)
返回
'A'
,在Java中,字符
'A'
也是ASCII数字65。你能简单解释一下吗?@ishachauhan给定的数值是有效的,或者它只是你问题的一个样本?因为它现在不是按递增顺序在1-26之间。在这个问题中,数值是随机选择的,它们不是在系列(inc,/dic)中的t。很抱歉,我没有正确解释,我们从用户处获取了输入(名称)。此数值存在疑问,我们无法从我们这边获取它们,即p的数值将为8,我们无法更改它
     int arr[][]={{65,1},{66,2},{67,3},{68,4},{69,5},{70,8},{71,3},{72,5},{73,1},{74,1},{75,2},{76,3},{77,4},{78,5},{79,7},{80,8},{81,1},{82,2},{83,3},{84,4},{85,6},{86,6},{87,6},{88,5},{89,1},{90,7}};
  
     String name=sc.nextLine();
        String pattern="[A-Z]+";
         if(name.matches(pattern)){
            int score=0;
            for(int i=0;i<name.length();i++){
                char ch=name.charAt(i);
                score+=arr[(int)ch -65][1];
            }
            System.out.println("Your numerology no is:"+score);
        }
        else System.out.println("Invalid name");