最近,我一直在尝试构建一个可以完成4件事的程序:
1)从键盘输入一个单词。
2)用包含字母表字母的字符串的上下文检查这个单词的上下文。
3)将给定单词的字母与字母串的字母进行比较,只要匹配,它将返回字母串+1中该字母的位置。 (例如,word ='a'position = 1,因为'a'是第一个字母)
4)获得所有这些职位的总数。(例如,word ='abc'total = 6)
现在让我告诉你我在代码方面所写的内容。
//Part 1 Entering word from keyboard
package IntroductionJava;
import java.util.Scanner;
public class Numerology
{
public static void main(String[] args)
{
int m=0,n=0,sum=0;
int j,k;
Scanner user_input=new Scanner(System.in);
String word;
System.out.print("Give a word: ");
word=user_input.next();
String word1 = "\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c2\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9";
//Part 2 check word
for(int i=0; i<word.length(); i++)
{
if(word.charAt(i)>=word1.charAt(0) && word.charAt(i)<=word1.charAt(word1.length()-1))
{
System.out.println("Your word '"+word+"' is valid.");
break;
}
else
{
System.out.println("Your word '"+word+"' is invalid.");
}
break;
//show System.out.print(word.charAt(i));
}
//Part 3 Compare letters
for(j=0; j<word.length(); j++)
{
for(k=0; k<word1.length(); k++)
{
if(word.charAt(j)==word1.charAt(k))//???
{
m=k+1;
}
}
}
}
现在,第1部分和第2部分工作正常。
当我尝试用unicode格式(unicode格式的字母来自希腊字母)比较我输入的单词的字母时,我的问题就出现了。我尝试了很多变化,我也在这里咨询了一些文章,但我找不到解决方案。
为了让事情更清楚一点,让我说我正在输入这个词:“你好”。我想检查'h'是否在字母表字符串中,如果是,我想将它的位置作为整数,在我们的例子中,它是数字'8'(字符串+1中的位置),依此类推。 / p>
我的程序的最后一部分是从给定的单词中获取所有这些数字并得到它的总数('hello'= 8 + 5 + 12 + 12 + 20 = 57)。
非常感谢你。
答案 0 :(得分:0)
这个怎么样:
String alphabet = "abcdefgh";
String input = "abc";
int value = input.chars()
.map(alphabet::indexOf)
.map(i -> i + 1)
.sum()
System.out.println(value);