【问题标题】:How to calculate with using String?如何使用字符串计算?
【发布时间】:2016-08-05 01:16:42
【问题描述】:

如果我必须用 16 位数字计算 也许是 4388576018402626

我想用三种方式计算

方式 1. (part14 * 2 + part12 * 2 + part10 * 2 + part8 * 2 + part6 * 2 + part4 * 2 + part2 * 2 +part0 * 2 ) =37
但是结果错误

方式 2. (part15 + part13 + part11 + part9 + part7 + part5 + part3 +part1) = 38 但结果为 66080783

方式 3. (way1 + way2) %10 因为方式 1 错误它不会有任何结果

public static void main(String[] args) {
    // TODO Auto-generated method stub

    //code for loop of follow program
    boolean run = true;
    while(run){

    //User enter the data
    Scanner sc = new Scanner (System.in);
    System.out.print("Enter the credit card number:");

    String cs = sc.nextLine();

    //String divide the 16 number in to one  different part
    String[] parts = cs.split("");
    String part0 = parts[0]; 
    String part1 = parts[1]; 
    String part2 = parts[2]; 
    String part3 = parts[3]; 
    String part4 = parts[4]; 
    String part5 = parts[5];
    String part6 = parts[6]; 
    String part7 = parts[7]; 
    String part8 = parts[8];
    String part9 = parts[9]; 
    String part10 = parts[10]; 
    String part11 = parts[11]; 
    String part12 = parts[12]; 
    String part13 = parts[13]; 
    String part14 = parts[14];
    String part15 = parts[15]; 

    String sd = (part14 * 2 + part12 * 2 + part10 * 2 + part8 * 2 + part6 * 2 + part4 * 2 + part2 * 2 +part0 * 2 );
    String sd1 = (part15 + part13 + part11 + part9 + part7 + part5 + part3 +part1);
    String sd2 = (sd+sd1);

    int sd3 = (sd2%10);

    if (sd3 =0)
    System.out.println ("The card is valid");
    else
    System.out.println ("The card is invalid");

}
}

}

【问题讨论】:

  • 请添加您收到的错误信息。我认为这是某种类型错误。提示:您必须将字符串解析为整数。请确保您了解您添加到此问题的标签。
  • 你不能对字符串进行算术运算。将字符串转换为数字,然后进行计算
  • 那么我能做些什么来计算 16digit 的一部分

标签: java string compiler-errors


【解决方案1】:

什么? :) 如果您希望对不适合 int 或 double 的数字进行算术运算,为什么不使用 BigDecimals?

或者你的目标到底是什么?没有人用字符串计算。字符串很适合存储任意内容,包括卡号 :) 但要进行数学运算,您总是需要一些数字。

String sd = (part14 * 2 ) is not something which works.
Integer.valueOf(part14)*2 does work.

还可以考虑使用字符串的 charAt 方法来获取任何字符,而不是制作 part1...part999999 字符串。

考虑到代码 sn-p,我您的问题是“如何计算 luhn 号”或“如何在 java 中验证信用卡号”。一个好的问题为一个好的答案开辟了道路,参见例如以Check Credit Card Validity using Luhn Algorithm 为例。

【讨论】:

  • 因为我想用输入 16 位来制作程序,然后分成 16 部分进行计算。但是我只知道在字符串和部分中使用
  • 您不需要将其拆分为 16 部分 - 您可以使用任何字符串的 charAt() 方法来获取任何位置的字符。这与一个简单的 for 循环一起允许您的代码处理任意长度的输入字符串(并且编写起来也短得多)。我建议您参考 Oracle 上的 Java trails - 这是对该语言的相当不错的描述。 Java 及其功能可以帮助您,让您的生活更加更轻松。我发现它值得好好学习。用 Java 玩得开心!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-21
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
相关资源
最近更新 更多