2016-02-09 2 views
1
if (diceValues == null || diceValues.length() == 0) return 0; 
    int temp; 
    int val = 0; 
    Scanner scanner = new Scanner(diceValues); 
    while (scanner.hasNext()) { 
     temp = scanner.useDelimiter(" ").nextInt(); 
     if (temp == 1) val += 100; 
     if (temp == 5) val += 50; 
    } 

diceValue - это строка типа «1 2 3 4 5», и сканер всегда пропускает последнее число. Таким образом, int val (значение) всегда меньше, чем должно быть.сканер не может прочитать последнюю строку из строки

+1

Вы отлажены эту программу правильно, потому что я могу видеть, что все значения считывается из сканера правильно – Bunti

+0

Откуда вы знаете, что он пропускает последний номер? Я просто попробовал его с помощью 'System.out.println (temp)', и он отобразил все 5 чисел. – ajb

ответ

1

Я думаю, что ваш код не problem.I побежал это так, и он возвращается мне дорожит 150.

import java.util.Scanner; 
public class Prog1 
{ 
    public static void main(String[] args){ 
     Prog1 p =new Prog1(); 
     int value = p.mymethod(); 
     System.out.println(value); 
    } 
    public int mymethod() 
    { 
     String diceValues = "1 2 3 4 5"; 
     if (diceValues == null || diceValues.length() == 0) return 0; 
     int temp; 
     int val = 0; 
     Scanner scanner = new Scanner(diceValues); 
     while (scanner.hasNext()) { 
     temp = scanner.useDelimiter(" ").nextInt(); 
      if (temp == 1) val += 100; 
      if (temp == 5) val += 50; 
     } 
     return val; 
    } 
+0

спасибо, тогда я должен искать другие части моей программы. – Song

Смежные вопросы