【问题标题】:Digital Signature BlueJ Error数字签名 BlueJ 错误
【发布时间】:2014-07-20 05:10:36
【问题描述】:

我为这个问题做了一个程序:

用Java编写一个程序来输入名字、中间名和姓氏。验证包含名字和姓氏的数字签名。如果签名不包含任何这些,请打印“无效签名”。另外,将他的全名打印在一行中。

我为此编写的程序是:

import java.io.*;
import java.io.*;
public class TaskPE_4
{
    public static void main(String args[])throws IOException
    {
        BufferedReader read=
              new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter your first name");
        String fn=read.readLine();
        System.out.println("Enter your middle name");
        String mn=read.readLine();
        System.out.println("Enter your last name");
        String ln=read.readLine();
        System.out.println("Enter your digital signature");
        String ds=read.readLine();
        ds+=" ";
        if(fnCheck(fn, ds)&&lnCheck(ln, ds))
            System.out.println("Valid Digital Signature");
        else
            System.out.println("Invalid Digital Signature");
        System.out.println("Your full name is "+fn+" "+mn+" "+ln+".");
    }

    private static boolean fnCheck(String fn, String ds)
    {
        int fnl=fn.length();
        int dsl=ds.length();
        for(int i=0; i<=(dsl-fnl); i++)
            if((ds.substring(i, (i+fnl))).equals(fnl))
                return true;
        return false;
    }

    private static boolean lnCheck(String ln, String ds)
    {
        int lnl=ln.length();
        int dsl=ds.length();
        for(int i=0; i<=(dsl-lnl); i++)
            if((ds.substring(i, (i+lnl))).equals(lnl))
                return true;
        return false;
    }
}

显示的输出是:

Enter your first name
Rachit
Enter your middle name
Rachit
Enter your last name
Bhargava
Enter your digital signature
Rachit Bhargava
Invalid Digital Signature
Your full name is Rachit Rachit Bhargava.

请帮我调试这个程序。

【问题讨论】:

  • 你说帮我调试这个程序是什么意思?你有什么错误吗?
  • 是的!显示无效数字签名的地方。它显示为有效的数字签名。
  • 你能解释一下 fnCheck 和 inCheck 是如何私有函数的吗?你试图通过他们实现什么?
  • 我不希望从程序外部访问 fnCheck 和 lnCheck 函数。所以,我已将它们设为私有!
  • 不,我知道,但他们想做什么?如果您的 ds 由 fn 和 ls 组成,我认为检查它的方法更简单吗?我明白 ds 的意思了吗?

标签: java javascript bluej


【解决方案1】:

如果我的问题正确,我认为你应该这样做

您应该使用contains() 函数来检查数字签名是否由名字和姓氏组成,而不是使用这些函数来检查您的数字签名。

代码:

if (ds.contains(fn)&& ds.contains(ln)) {
            System.out.println("Valid Digital Signature");
        } else {
            System.out.println("Invalid Digital Signature");
        }

输出:

Enter your first name
Rachit
Enter your middle name
Rachit
Enter your last name
Bhargava
Enter your digital signature
Rachit Bhargava
Valid Digital Signature
Your full name is Rachit Rachit Bhargava.

来源:

String.contains in Java

【讨论】:

    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 2017-03-05
    • 2011-12-26
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多