有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java第一个字母和最后一个字母、第二个字母和倒数第二个字母之间的差值之和,依此类推,直到单词的中心

如果给定字符串为“万维网” 在每个单词中,找出第一个字母和最后一个字母、第二个字母和倒数第二个字母之间的差值之和,依此类推,直到单词的中心

世界=[W-D]+[O-L]+[R]=[23-4]+[15-12]+[18]=[19]+[3]+[18]=[40]

宽=[W-E]+[I-D]=[23-5]+[9-4]=[18]+[5]=[23]

网络=[W-B]+[E]=[23-2]+[5]=[21]+[5]=[26]

将每个单词的和连接起来形成结果

[40][23][26]

[402326]

class Strcode{
    public static void main(String args[]){
        int xd[]=new int[100];
        int n[]=new int[100];
        int position=0;
        String input = "hello".toLowerCase(); //note the to lower case in order to treat a and A the same way
        for( int i = 0; i < input.length(); ++i) {
            position = input.charAt(i) - 'a' + 1;
            System.out.println(position);
            for( int k=0,j=position.length()-1;k<j;k++,j--){
                xd[k]=Math.abs(xd[k]-xd[j]);
                System.out.println(xd[k]);
            }
        }
    }
}

通过上面的代码,我可以得到字母的数值,但无法进行下一步的减法


共 (2) 个答案

  1. # 1 楼答案

    这是初学者的基本问题之一。让我来帮你解决。您需要执行以下步骤:

    1. 从给定字符串中提取每个单词。(你自己做!)
    2. 计算每个单词的总和。(找到下面的代码!)
    3. 将这些总和串联起来。(轻松!)

      public class sample{
      
      public static void main(String args[]){
      
          // Do your part of code here
      
          String sampleWord = "hello";
          int individualWordSum = countSum(sampleWord);
      
      }
      
      public static int countSum(String word){
      
        String input = word.toLowerCase();
        int sum = 0;
      
        for( int i = 0; i < input.length()/2; i++) {
            int s = (input.charAt(i) - 'a') - (input.charAt(input.length() - 1 - i) - 'a');
            sum += Math.abs(s);
        }
      
        if(input.length()%2!=0){
          sum += input.charAt(input.length()/2) - 'a' + 1;
        }
      
        System.out.println("sum for " + input + " is " + sum);
      
        return sum;
       }
      }
      

    下面是您需要的完整代码,但首先请自己尝试

    public class sample{
    public static void main(String args[]){
    
        String sentence = "WORLD WIDE WEB";
        String words[] = sentence.split(" ");
        String result = "";
    
        for(String word : words){
          result += String.valueOf(countSum(word));
        }
    
        System.out.println("Sum for " + sentence + " is " + result);
    
    }
    
    public static int countSum(String word){
    
      String input = word.toLowerCase();
      int sum = 0;
    
      for( int i = 0; i < input.length()/2; i++) {
          int s = (input.charAt(i) - 'a') - (input.charAt(input.length() - 1 - i) - 'a');
          sum += Math.abs(s);
      }
    
      if(input.length()%2!=0){
        sum += input.charAt(input.length()/2) - 'a' + 1;
      }
    
      return sum;
    
    }
    }
    
  2. # 2 楼答案

    如果不实现所描述的逻辑,而是对其进行分析并得到一个更简单的解决方案,则可以使它变得更简单

    您可以将单词的前半部分(如果单词长度为奇数,则包括中间的字母)相加,然后减去后半部分,而不是将第一个字母和最后一个字母之间的差值相加,依此类推

    String sentance = "WORLD";
    int middle = Math.ceil(sentance.length() / 2);
    int sum = 0;
    
    for (int i = 0; i < sentance.length(); i++)
    {
        if (i <= middle)
        {
            sum += sentance[i] - 'A' + 1;
        }
        else
        {
            sum -= sentance[i] - 'A' + 1;
        }
    }
    
    System.out.println("Sum: " + sum);
    

    您将获得:

    Sum: 40