我写了一个程序来检查一个单词是否没有任何重复的字母。我遇到两个问题:
1 - 我在面向对象的代码中写了这个,我在调用我的main方法时遇到了问题
2-当我在一个方法中使用代码时 - 没有分解成碎片 - 布尔值没有根据我的checkLetters方法进行更改。无论测试值是多少,输出都是相同的
我是一名java初学者,我很感激任何建议
谢谢!
import java.util.Scanner;
public class uniqueLetters
{
boolean isUnique;
char temp;
int i = 0;
String str;
char[] letters;
public static void main(String[] args)
{
testWord testing = new testWord();
}
private void testWord()
{
getArray();
checkLetters();
getStatement();
}
private void getArray()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter your word:");
str = keyboard.nextLine();
letters = str.toCharArray();
}
private boolean checkLetters()
{
boolean isUnique = true;
for (i = 0; i < letters.length; i++)
{
for (int j = 0; j < letters.length; j++)
{
if (letters[i] == letters[j])
isUnique = false;
}
}
return isUnique;
}
private void getStatement()
{
if (checkLetters())
System.out.print("This word has all unique letters");
else
System.out.print("This word has duplicate letters");
}
}
答案 0 :(得分:1)
在循环中你做
for (i = 0; i < letters.length; i++)
{
for (int j = 0; j < letters.length; j++)
{
if (letters[i] == letters[j])
isUnique = false;
break;
}
}
但由于第二个循环也是从0
开始,因此它总是会找到重复的。
试
for (i = 0; i < letters.length; i++)
{
for (int j = i + 1; j < letters.length; j++)
{
if (letters[i] == letters[j])
isUnique = false;
}
}
此外,当您从checkLetters
致电getStatement
时,您无需通过testWord
方法拨打电话。
同样由于testWorld
是一个方法而不是一个类,你不应该实例化它,只需要调用它。