2 回答

TA貢獻(xiàn)1841條經(jīng)驗 獲得超3個贊
我不確定你的 chopper 類做了什么,但我認(rèn)為它將輸入字符串拆分為空格。如果是這種情況,您可能會在第一個方法 howMany() 中通過調(diào)用 chopper.Next() 索引到斬波器的末尾,直到它位于輸入的末尾。如果您已經(jīng)指向斬波器的末端,則在另一個方法中對 chopper.Next() 的下一次調(diào)用將為空。
我推薦以下內(nèi)容:
public static String howMany(Scanner chopper){
String x = "";
int y = 0;
int doubleCount=0;
int intCount =0;
while(chopper.hasNext()){
y++;
if (chopper.hasNextDouble()){
doubleCount++;
}
if(chopper.hasNextInt()){
intCount++;
}
x = chopper.next();
}
return x+y+" "+ intCount + " " + doubleCount;
}

TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊
我假設(shè)這是一項學(xué)術(shù)練習(xí),您必須使用 Scanner 和一種方法解決您的問題。您的代碼中的問題是您為每個方法使用/傳遞相同的掃描儀,但是在方法 howMany (第一次調(diào)用)中,代碼消耗了您輸入的所有標(biāo)記。由于您無法將掃描儀重新設(shè)置為從輸入的開頭重新開始,因此可以聲明三個掃描儀(再次,我假設(shè)這是一個學(xué)術(shù)練習(xí),您必須使用掃描儀解決它)并傳遞每個掃描儀到你的方法。提示:如果不想使用 chopper.next() 的結(jié)果,不需要將其賦值給變量 x,直接調(diào)用 chopper.next() 即可。
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
String typedStuff = kb.nextLine();
Scanner chopperHowMany = new Scanner(typedStuff);
Scanner chopperHowManyInts = new Scanner(typedStuff);
Scanner chopperHowManyDoubles = new Scanner(typedStuff);
System.out.println(howMany(chopperHowMany));
System.out.println(howManyInts(chopperHowManyInts));
System.out.println(howManyIntsAndDoubles(chopperHowManyDoubles.reset()));
}
public static int howMany(Scanner chopper) //
{
int y = 0;
while (chopper.hasNext()) {
y++;
chopper.next();
}
return y;
}
public static int howManyInts(Scanner chopper) {
int y = 0;
while (chopper.hasNext()) {
if (chopper.hasNextInt()) {
y++;
}
chopper.next();
}
return y;
}
public static int howManyIntsAndDoubles(Scanner chopper) {
int y = 0;
while (chopper.hasNext()) {
if (chopper.hasNextDouble()) {
y++;
}
chopper.next();
}
return y;
}
添加回答
舉報