在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");