【问题标题】:Is there any easier way to set integer for string characters?有没有更简单的方法为字符串字符设置整数?
【发布时间】:2016-06-02 05:48:23
【问题描述】:

我正在制作将随机字符串转换为数字的转换器。但我想知道有没有更简单的方法来做到这一点:

package codec;

import javax.swing.JFrame;

public final class Codec extends JFrame {	

	public static void main(String[] args) {
    	    String x = "qwertyuiopasdfghjkl";
    	    		int a = x.charAt(1);    
    	    		int b = x.charAt(2);
    	    		int c = x.charAt(3);
    	    		int d = x.charAt(4);
    	    		int e = x.charAt(5);
    	    		int f = x.charAt(6);
    	    		int g = x.charAt(7);
    	    		int h = x.charAt(8);
    	    		int i = x.charAt(9);
    	    		int j = x.charAt(10);
    	    		int k = x.charAt(11);
    	    		int l = x.charAt(12);
    	    		int m = x.charAt(13);
    	    		int n = x.charAt(14);
    	    		int o = x.charAt(15);
    	    		int p = x.charAt(16);
    	    		int q = x.charAt(17);
    	    		int r = x.charAt(18);
    	    		System.out.println(a*b+c+d*e+f+g*h+i+j*k+l*m+n*o+p+q*r);
	}
}

它给了我“81782”,我可以简单地改变数字和计算。 我没有写太多java,所以我真的是初学者。 用这样的循环来做这件事是否合理:

for (int i = 1; i < x.length() ; i++){
//code 	
}

【问题讨论】:

  • 除非您精确定义操作System.out.println(a*b+c+d*e+f+g*h+i+j*k+l*m+n*o+p+q*r);。即使使用循环获取值,您最终可能会将值保存在 int 数组中。
  • 如果表达式为 a*b+c + d*e+f + g*h+i + j*k+l + m*n+o + p*q+r 则可能。这将得到Σ x*y+z形式的表达式

标签: java loops for-loop int charat


【解决方案1】:

也许这可以帮助你。另外,请注意,字符串从索引 0 开始,而不是 1。所以,你的 'a' 是符号 'w'。

public static void main(String[] args) {
    String x = "qwertyuiopasdfghjkl";
    Map<Character, Integer> charMap = new HashMap<>();
    char c = 'a';
    for (int i = 1; i < x.length(); i++) {
        charMap.put(c++, (int) x.charAt(i));
    }
    System.out.println(charMap.get('a') * charMap.get('b')
                       + charMap.get('c')
                       + charMap.get('d') * charMap.get('e')
                       + charMap.get('f')
                       + charMap.get('g') * charMap.get('h')
                       + charMap.get('i')
                       + charMap.get('j') * charMap.get('k')
                       + charMap.get('l') * charMap.get('m')
                       + charMap.get('n') * charMap.get('o')
                       + charMap.get('p')
                       + charMap.get('q') * charMap.get('r'));
}

【讨论】:

  • 您的方法有效,但您不认为这可能会在某个点上消耗资源吗?我已经测量了它的简单示例:>81782 >Pomper 方法:192137 纳秒 >81782 >Solorad 方法:596116 纳秒显然我不知道@Pomper 想要使用它有多详尽。
  • 这有助于我编写我一直在寻找的代码。正如@Jodn 所说,您的方法更消耗资源,这并不重要,因为我现在只是在测试东西。
  • 我用for循环展示了清晰的方法,因为它被问到了。不幸的是,有时需要在性能和易读性之间做出选择。
  • @Soloard 我同意你的看法;)。 PS:Pomper,以防万一您不知道可以使用以下命令遍历字符串的字符: for(char e: x.toCharArray()){ } ...我只想将其留在这里。玩得开心测试你的东西;)
【解决方案2】:

这里是使用循环的代码

String afd = "234567890";
    int sum=0;
    for(int ij=0;ij<afd.length();ij+=2)
    {
        sum = sum + (afd.charAt(ij)*afd.charAt(ij+1));
    }
       System.out.println(sum);

希望我的代码在这方面对您有所帮助。祝您编码愉快

【讨论】:

  • 将所有变量加在一起,我的想法是我可以在数字之间使用高级计算来获得始终唯一的结果。就像所有变量之间的 sin(a)*sqrt(b-c)...。当结果是唯一的时,我可以合理地将数字转换为单词或字母。所以它会是花哨的地穴,有点像 Minecraft 种子生成器。
  • 如果您想在一次操作中一次使用 3 个数字,则 n 递增 ij+=3 并更改您想要执行的内部操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
相关资源
最近更新 更多