/*我是編程的初學者。作爲任務的一部分,我必須在數字字符串中找到最頻繁的數字。雖然我的代碼被編譯,但它不會給我正確的結果。請幫助我有了這個。 */如何查找數字字符串中最頻繁的數字?
import java.util.*;
public class program
{
public int test(String number)
{
int freq0,freq1,freq2,freq3,freq4,freq5,freq6,freq7,freq8,freq9;
freq0=0;
freq1=0;
freq2=0;
freq3=0;
freq4=0;
freq5=0;
freq6=0;
freq7=0;
freq8=0;
freq9=0;
for (int i =0; i<number.length();i++)
{
switch (number.charAt(i))
{
case 48: freq0++;
break;
case 49: freq1++;
break;
case 50: freq2++;
break;
case 51: freq3++;
break;
case 52: freq4++;
break;
case 53: freq5++;
break;
case 54: freq6++;
break;
case 55: freq7++;
break;
case 56: freq8++;
break;
case 57: freq9++;
break;
}
}
List<Integer> hope = new ArrayList<Integer>();
hope.add(freq0);
hope.add(freq1);
hope.add(freq2);
hope.add(freq3);
hope.add(freq4);
hope.add(freq5);
hope.add(freq6);
hope.add(freq7);
hope.add(freq8);
hope.add(freq9);
int temp=0;
for (int j=0; j<(hope.size());j++)
{
if (temp<hope.get(j))
{
temp=hope.get(j);
}
}
return temp;
}
}
//這個類被另一個主class.I叫我寫它的代碼了。
public class checker
{
public static void main (String args [])
{
int inputs[] = {1234, 11, 144, 97764 };
int outputs[] = {1, 1, 4, 7};
for(int i=0; i<inputs.length; i++) {
int input=inputs[i];
int oracle_output=outputs[i];
program p = new program();
String input_string = "" + input;
int output = p.test(input_string);
if(output==oracle_output) {
System.out.println("test passed for " + input);
} else {
System.out.println("test failed for " + input);
}
}
}
}
你得到什麼結果,而且你能指望什麼?哪個數字失敗?你用調試器完成了它嗎?順便說一句,我強烈建議重新格式化您的代碼以使其更易於閱讀。 (你的主代碼也可以簡單得多,但在簡化它之前,應該先了解一下當前的失敗。) –
如果你替換switch-case中的'48,49,50'等,你可以使你的代碼更具可讀性用'0','1','2'等。並遵守Java命名約定http://www.oracle.com/technetwork/java/codeconventions-135099.html,例如類應該以大寫字母 – hinneLinks