Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串的八进制值_Java_String_Octal - Fatal编程技术网

Java 字符串的八进制值

Java 字符串的八进制值,java,string,octal,Java,String,Octal,我需要任何给定字符串的八进制值,为此我使用下面的代码 public static void main(String[] args) { HashMap<Character, String> octalValues = new HashMap<Character, String>(); octalValues.put('*', "052"); octalValues.put('1', "061"); octa

我需要任何给定字符串的八进制值,为此我使用下面的代码

public static void main(String[] args) {

        HashMap<Character, String> octalValues = new HashMap<Character, String>();
        octalValues.put('*', "052");
        octalValues.put('1', "061");
        octalValues.put('2', "062");
        octalValues.put('3', "063");
        octalValues.put('a', "141");
        octalValues.put('b', "142");
        octalValues.put('c', "143");
        octalValues.put('d', "144");

        String value = "123abc*";

        for (char i = 0; i < value.length(); i++) {
            System.out.print(octalValues.get(value.charAt(i)) + " ");
        }
publicstaticvoidmain(字符串[]args){
HashMap octalValues=新HashMap();
八进制值。put('*',052”);
八进制值。put('1','061”);
八进制值。put('2','062');
八进制值。put('3','063');
八进制值。put('a','141”);
八进制值。put('b','142”);
八进制值。put('c','143”);
八进制值。put('d','144”);
字符串值=“123abc*”;
for(字符i=0;i
输出:061062063141143052

是否有任何预定义的Java方法或分类器可用于此操作?

表示应将整数值格式化为八进制。例如:

System.out.printf("%03o", intValue);
03
使该值至少有3个字符长,左手带零。

使用Integer.toOctalString(int) 我会说,将它们拆分为字符,将字符转换为整数,然后从中创建一个八进制字符串。例如
Integer.toOctalString((int)“c')
。首先将字符转换为
整数
,然后创建一个表示字符八进制值的
字符串

因此,在您的示例中,如果您有一个字符串,您可以对字符串中的每个字符执行此操作。您不必对此进行明确的强制转换。(请记住,字符可以表示为整数,但我们在这里不这样做)

String s=“Hello World”;
对于(int i=0;i
还有第二个“错误”
您正在使用一个字符作为循环的数据类型。虽然这确实有效,但它不是为循环编制索引的正确数据类型。当您在字符串长度上编写循环时,您使用的是整数。循环中的整数表示
索引
。在这种情况下,确实索引引用了字符串中的一个字符,但是在本例中仅适用。当我阅读该代码时,我希望您对在循环中创建的
字符
执行一些操作。不仅将其用作
字符串的索引
,您仍然需要循环,还需要
整数.toOctalString()
将执行地图所执行的操作。

尝试对每个字符应用
Integer\toOctalString()

例如:

System.out.println( 
     "123abc*".chars()
              .mapToObj( Integer::toOctalString )
              .collect( Collectors.toList() ) );
System.out.println( 
      "123abc*".chars()
               .mapToObj( c -> String.format( "%03o", c ) )   
               .collect( Collectors.toList() ) );
输出:
[61、62、63、141、142、143、52]

编辑

如果您想得到前导零,可以使用Andy Turner建议的
String.format(“%03o”,c)
(为了完整起见,在这里重复一下)。但是,请注意,对于像中文字符一样的unicode字符,字符代码点可能会更高,因此3的长度可能不够(对于
1
,您会得到类似
061
的字符串,对于
100226
的字符串肖等)

例如:

System.out.println( 
     "123abc*".chars()
              .mapToObj( Integer::toOctalString )
              .collect( Collectors.toList() ) );
System.out.println( 
      "123abc*".chars()
               .mapToObj( c -> String.format( "%03o", c ) )   
               .collect( Collectors.toList() ) );

输出:
[0610621063141142143052]

错误是什么?使用
Integer.toOctalString()怎么样
并将字符传递给该方法?没有错误,但对于每个字符,我必须在地图中输入一个条目,只是想知道是否有预定义的方法存在是的,有预定义的方法!@DylanMeeus这在CR上是离题的。他不是要求检查他的代码,他要求的是实现他想要的功能的内置功能他正在做什么。