此程序应计算数字中的位数 这是我的代码:
import java.util.Scanner;
public class Converter {
public static void main(String[] args) {
Scanner marty = new Scanner(System.in);
float sk;
System.out.println("Enter start number: ");
sk = marty.nextFloat();
int numb = (int)Math.log10(sk)+1;
System.out.println(numb);
marty.close();
}
}
我遇到这种错误,同时尝试在逗号之前输入4位或更多位数,例如11111,456:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextFloat(Unknown Source)
at Converter.main(Converter.java:11)
关于问题可能是什么的任何想法?
答案 0 :(得分:0)
输入数字时,除非您希望将其拆分,否则不应包含逗号。如果你想要一个小数,请使用"。"代替。如果您想要一个大于999的数字,请不要包含逗号
答案 1 :(得分:0)
取一个数字的log(base10)并加1表示无论如何都不会给出输入数字位数的正确答案。
您给出的11111.465示例有8位数字。这个数字的log10是4.045 ...添加1给出了5的答案。
另一个例子:99,Log10(99)= 1.99,强制转换为int = 2,加1 = 3 ......显然只有2位数。
您可以将输入作为字符串读取,然后执行以下操作
int count = 0;
String s = /* (Input Number) */
for(char c : s.toCharArray())
{
if(Character.isDigit(c))
count++;
}
你必须通过检查它的模式来检查它实际上是一个数字......
答案 2 :(得分:0)
就像很多人说的那样,逗号搞砸了你。
如果输入需要逗号,则可以考虑一个选项,在尝试计算位数之前替换输入字符串中的逗号。
System.out.println("Enter start number: ");
String input = marty.nextLine();
float sk = Float.parseFloat(input.replace(",", ".")); // use input.replace(",", "") if you want to remove commas
int numb = (int)Math.log10(sk)+1;
System.out.println(numb);