2016-12-06 58 views
-3

我一直在研究這個程序,目前我被卡住了。硬件提示是提示用戶輸入數字,將其保存爲數組,然後查找奇數的個數&百分比,然後將這些數值顯示回給用戶。從數組中獲取奇數

目前我正在嘗試寫入部分代碼,發現數組中的奇數的百分比,但返回不顯示,我只是無法弄清楚。有任何想法嗎?謝謝!

import java.util.*; // import java course for Scanner class 
public class Integers { 
    public static void main(String[] args) { 
     Scanner console = new Scanner(System.in); 
     System.out.println("Please input a series of numbers"); 
     int inputs = Integer.parseInt(console.next()); 
     int[] arraysize = new int[inputs]; 
     Oddvalues(arraysize); 
    } 

    public static int Oddvalues (int[] size) { 
     int countOdd = 0; 
     for (int i = 1; i < size.length; i++) { 
      if(size[i] % 2 != 0) { 
       i++; 
      } 
     } 
     return countOdd;  
    } 

} 
+1

您不添加任何數據到數組 – Jobin

+2

陣列在'0'沒有'1'啓動。你增加'i',而不是'countOdd'。 –

+0

我假設HW = HomeWork?問題給你。 Oddvalues函數返回什麼值? – zipzit

回答

0

在函數Oddvalues你促進我而不是促進countOdd。循環應該從0開始不是1.

1

請考慮以下代碼,該代碼似乎在本地IntelliJ工作。我的方法是將掃描器中的一行讀作一個字符串,然後將該輸入以空格分隔爲組件號。這可以避免您嘗試從控制檯直接創建整數數組時遇到的問題。

然後,只需遍歷每個數字字符串,使用Integer.parseInt(),檢查是否它是奇怪的。

public static void main(String[] args) { 
    Scanner console = new Scanner(System.in); 
    System.out.println("Please input a series of numbers"); 
    String nextLine = console.nextLine(); 
    String[] nums = nextLine.split(" "); 
    int oddCount = 0; 
    for (String num : nums) { 
     if (Integer.parseInt(num) % 2 == 1) { 
      ++oddCount; 
     } 
    } 
    double oddPercent = 100.0*oddCount/nums.length; 
    System.out.println("Total count of numbers: " + nums.length + ", percentage odd: " + oddPercent); 
} 
+2

那樣調用主要的Oddvalues是否有一個原因,爲什麼測試功能代碼應該被降級? –

+1

爲什麼不爲他們完成他們的整個家庭作業,是嗎?而且,做功課,你認爲他們正在學習什麼? – zipzit

+1

隨着您的投票計數,我們當然期望您的更好的答案... – zipzit

0

試試這個

import java.util.*; 
import java.lang.*; 
import java.io.*; 
public class OddVals{ 
public static void main(String[] args) throws java.lang.Exception { 
    Scanner sc = new Scanner(System.in); 
    int[] array = new int[sc.nextInt()];  // Get the value of each element in the array 
    System.out.println("Please input a series of numbers"); 
    for(int i = 0; i < array.length; i++) 
     array[i] = sc.nextInt(); 
    System.out.println("Number of Odds:" +Oddvalues(array)); 
    printOdd(array); 
    } 
public static int Oddvalues (int[] size) { 
    int countOdd = 0; 
    for (int i=0; i < size.length; i++){ 
     if(size[i]%2 != 0) 
     ++countOdd;    
    } 
    return countOdd;  
    } 
public static void printOdd(int[] arr) 
{ 
    for(int i=0;i<arr.length;++i) 
    { 
     if(arr[i]%2==1) 
      System.out.print(arr[i]+" "); 
    } 
} 
0
import java.util.*; // import java course for Scanner class 
public class Integers { 


    public static void main(String[] args) { 
     List<Integer> intList = new ArrayList<Integer>(); 


     Scanner console = new Scanner(System.in); 
     System.out.println("Please input a series of numbers"); 
     while (console.hasNext()) 
     { 

      String str = console.next(); 
      try 
      { 
       if(str.equals("quit")){ 
        break; 
       } 
       int inputs = Integer.parseInt(str); 

       System.out.println("the integer values are" +inputs); 
       intList.add(inputs); 
      } 
      catch (java.util.InputMismatchException|NumberFormatException e) 
      { 
       console.nextLine(); 
      } 


     } 
     console.close(); 
     double d = Oddvalues(intList); 
     System.out.println("the percent is" +d); 
    } 

    public static double Oddvalues (List<Integer> list) { 
     int count = 0; 
     for(Integer i : list) 
     { 

      if(!(i%2==0)) 
      { 
       count++; 
      } 
     } 

     double percentage = (Double.valueOf(String.valueOf(count))/ Double.valueOf(String.valueOf(list.size())))*100; 

     return percentage; 

    } 
} 

如果這有助於