5 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
假設(shè)輸入數(shù)字的長(zhǎng)度為 10,并且“i”在 for 循環(huán)中已達(dá)到值 5。
現(xiàn)在“j”的值為 0 到 9。
因此,當(dāng)“j”等于 5 時(shí),當(dāng)您將第 5 個(gè)位置的數(shù)字與其自身進(jìn)行比較時(shí),if 條件變?yōu)?true(這始終為 true)。
如果添加 i != j 條件,它將解決問(wèn)題:-
if(num.charAt(i)==num.charAt(j) and i != j)
或者,您可以修改 j 的循環(huán),使其從 i + 1 開(kāi)始,這樣就不會(huì)出現(xiàn)重疊。
for(int j=i+1;j<num.length();j++)
第二個(gè)選項(xiàng)要好得多,因?yàn)樗鼘p少?gòu)?(n*n) 到 (n * (n - 1))/2) 的比較次數(shù),其中 n 是輸入數(shù)字中的位數(shù)。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
一種可能的解決方案是使用Stream
將您的字符轉(zhuǎn)換String
為a?Set
,然后如果集合的大小與字符串的長(zhǎng)度相同,那么它是唯一的:
Scanner sc = new Scanner(System.in);
System.out.println("Enter the number to be checked: ");
String num = sc.nextLine();
boolean unique = Stream.of(num.split(""))
? ? .map(s -> new String(s))
? ? .collect(Collectors.toSet()).size() == num.length();
// With "1234" -> print true
// With "12342" -> print false
System.out.println(unique);

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng) 時(shí),您的代碼將始終找到“重復(fù)”字符i == j。
您應(yīng)該更改循環(huán)的索引,以免將字符與其自身進(jìn)行比較:
for(int i=0;i<num.length();i++) {
for(int j=i+1;j<num.length();j++) {
if(num.charAt(i)==num.charAt(j))
...
此外,您應(yīng)該只輸出“...是一個(gè)唯一的數(shù)字”。完成外循環(huán)后的消息。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用以下簡(jiǎn)短而方便的方法:
String a = "123452";
String[] split = a.split("");
List<String> list = Arrays.asList(a.split(""));
Set<String> set = new HashSet<>(list);
System.out.println("Unique: " + (list.size() == set.size()));

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
import java.util.*;
public class spnum
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
String num = sc.next();
int ctr = 0;
boolean isNumUnique = true;
for(int i = 0; i < num.length(); i++)
{
for(int j = 0; j < num.length(); j++)
{
if(num.charAt(i) == num.charAt(j))
{
ctr++;
}
}
if(ctr > 1)
{
isNumUnique = false;
}
ctr = 0;
}
if(isNumUnique == true)
{
System.out.println("Number is a unique number");
}
else
{
System.out.println("Number is not a unique number");
}
}
}
這段代碼會(huì)給出正確的答案
添加回答
舉報(bào)