首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字基转换返回(-ve)值

数字基转换返回(-ve)值
EN

Stack Overflow用户
提问于 2022-10-25 04:31:11
回答 2查看 58关注 0票数 0

我正在自学Java编程,我试图做一些数字转换,从基数10到任何基,但我一直得到一个负值与下面的代码

代码语言:javascript
复制
import java.lang.Math;
import java.util.Scanner;

public class NumberSystemConversion {
    public static void main(String [] args) {
        System.out.println("Enter the  source base of the integer");
        Scanner sc = new Scanner(System.in);
        int sBase = sc.nextInt();
        System.out.println("Enter the destination base of the integer");
        int dBase = sc.nextInt();
        System.out.println("Enter the integer");
        String s1 = sc.next();

        //int len = s1.length();
        int decNumber = 0;
        for (int i =0; i <= s1.length()-1;  i++) {
            decNumber += s1.indexOf(i)*Math.pow(sBase,i);
        }
        System.out.println(decNumber);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2022-10-25 04:46:15

您正在使用indexOf方法获取字符的索引。如果字符串中不存在它,则indexOf将返回一个-1。这就是你得到负值的方法。

345作为输入。您正在将(i)从0迭代到2 (s.length() - 1为2)。

提示:您可以使用以下

代码语言:javascript
复制
for (int i = 0; i < s.length(); i++) 

不需要从长度中扣除1并检查它是否小于或等于。

然后检查s1.indexOf(i)。在第一次迭代中,将检查s1.indexOf(0),因为字符串中没有0,所以它将返回-1

票数 0
EN

Stack Overflow用户

发布于 2022-10-25 08:23:46

您正在使用indexOf()方法获取字符的索引。但在你的背景下是完全不合适的。若要迭代字符串的字符,请使用charAt()或更好的codePointAt(),如下所示:

代码语言:javascript
复制
for (int i = 0; i < s.length(); i++)  {
    System.out.println( s.codePointAt(i) );
}

一旦到了那里,您就必须将字符的unicode代码点转换为您想要计算的数字。此表可能会有所帮助:https://www.unicode.org/charts/PDF/U0000.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74189147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档