【发布时间】: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