Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码检测到字符串有重复的字母,即使它没有_Java_Loops - Fatal编程技术网

Java 代码检测到字符串有重复的字母,即使它没有

Java 代码检测到字符串有重复的字母,即使它没有,java,loops,Java,Loops,我写了一个程序来检查一个单词是否有任何重复的字母。我有两个问题: 1-我是用面向对象代码编写的,调用main方法时遇到问题。 2-当我将代码放在一个方法中时-没有分解成碎片-布尔值在我的checkLetters方法的基础上没有改变。无论测试值是什么,输出都是相同的。 我是一名java初学者,如有任何建议,我将不胜感激。 谢谢大家! import java.util.Scanner; public class uniqueLetters { boolean isUnique; char temp

我写了一个程序来检查一个单词是否有任何重复的字母。我有两个问题:
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");
}

}
import java.util.Scanner;
公共类专用信件
{
布尔是唯一的;
焦炭温度;
int i=0;
字符串str;
字符[]个字母;
公共静态void main(字符串[]args)
{
testWord testing=新testWord();
}   
私有void testWord()
{
getArray();
方格字母();
getStatement();
}
私有void getArray()
{
扫描仪键盘=新扫描仪(System.in);
System.out.println(“请输入您的单词:”);
str=keyboard.nextLine();
字母=str.toCharArray();
}
私有布尔校验字母()
{
布尔值isUnique=true;
对于(i=0;i
在您的循环中

for (i = 0; i < letters.length; i++)
{
 for (int j = 0; j < letters.length; j++)
 {
 if (letters[i] == letters[j])
 isUnique = false;   
 break;
 } 

}
另外,当您从
getStatement
调用
checklets
时,不需要从
testWord
方法调用它


另外,由于
testWorld
是一个方法而不是一个类,您不应该实例化它,只需调用它。

感谢您的帮助!我成功了!我将代码转换回main方法中,直到我对OOP更清楚为止。我还修复了嵌套循环,因此它只在上一次迭代开始后才开始比较数组中的值。
for (i = 0; i < letters.length; i++)
{
 for (int j = i + 1; j < letters.length; j++)
 {
 if (letters[i] == letters[j])
 isUnique = false;   
 } 

}