행맨 프로젝트를하고 있습니다. 나는 대부분의 코드 작업을하고있다."비밀 단어"글자를 입력하십시오.
내가 일할 수없는 부분은 "비밀 단어"에 동일한 문자가 두 개 이상있는 부분입니다. 예를 들어 "hello"에는 2 "l"이 있습니다.
int pos = $Input.indexOf($Guessed);
if (pos == -1)
{
System.out.print("Search string '" + $Guessed + "' not found");
}
else
{
System.out.println("\nSearch string found at " + (pos + 1));
pos = $Input.indexOf($Guessed);
String before = $Display.substring(0, pos);
String after = $Display.substring(pos + $Guessed.length());
System.out.println(before + $Guessed + after);
$Display = before + $Guessed + after;
System.out.println($Display);
$GuessAmt++;
}
내가 살펴 보았다 : 그것은 "----"(안녕하세요) 추측이 옳았다 경우에 추측 된 문자로 대체 어디
이
코드의 부분에 대한 코드입니다 여러 가지 대답은 여기에 있지만 나는 지금까지 일할 수 없습니다. 분명히 누군가 "l"을 추측하면 "-----"는 (hello)의 "--ll-"로 변경됩니다.나는 도전 과제를 즐기기 때문에 이것을 코딩하는 사람을 찾고 있지 않지만 약간의 힌트가 좋을 것이다 !!
분명히 내 코드를 보면 아쉽게도 배열을 사용할 수 없다고 추측 할 수 있습니다. 이것은 자바 클래스의 소개 일뿐입니다.
도움을 주시면 감사하겠습니다.
EDIT : 현재로서는 첫 번째 "l"이 (hello)의 "l"모두가 아닙니다.
편집 : 변경. 그러나 이제는 "inside if"print 문을 계속 반복합니다. 이 문제를 해결하는 방법을 알지 못한다!
int pos = $Input.indexOf($Guessed);
if (pos == -1)
{
System.out.print("Search string '" + $Guessed + "' not found");
}
else
{
//System.out.println("\nSearch string found at " + (pos + 1));
for(int i=0;i<$StrLength;i++)
{
System.out.println(i);
if($Input.charAt(i) == $Guessed.charAt(0))
{
i = $Input.indexOf($Guessed);
String before = $Display.substring(0, i);
String after = $Display.substring(i + 1);
System.out.println("inside if" + before + $Guessed + after);
$Display = before + $Guessed + after;
}
}
System.out.println($Display);
$GuessAmt++;
}
은 식별자에 달러 기호를 사용하지 마십시오. 그것들은 컴파일러에 의해 생성 된 식별자 (또는 다른 자동 코드 생성 도구)에 의해 예약되어야합니다. – ajb
예. 식별자에 달러 기호를 사용하면 안됩니다. 함수와 변수 이름을 소문자로 시작하고 클래스를 대문자로 시작하는 표준 대문자 규칙을 준수해야합니다. –
당신은이 교환을 한 번만하고 싶다고 말했습니다. 컴파일러는 마음 독자가 아닙니다. 이 작업을 두 번 이상 수행하려면 루프가 필요합니다. – ajb