返回浮点数组方法
Returning float array method
我正在尝试 return 一个浮点数组到我的主 class 以便我可以打印和比较该数组。
传递给 class 的 'str' 由全局字符串声明,取自我的主 class
上的用户输入
主要
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String input = null;
System.out.print("Please enter a sentence or enter quit to end program: ");
input = sc.nextLine();
while(!input.equals("quit"))
{
System.out.println("The number of characters in the string is: " + BloorS.count(input));
System.out.println("The number of Spaces in the string is: " + Bloor_S.sCount(input));
System.out.println("The number of words in the string is: " + Bloor_S.wCount(input));
Bloor_S.print();
Bloor_S.freq(); //Change
System.out.println();
System.out.print("Please enter a sentence or enter quit to end program: ");
input = sc.nextLine();
}
sc.close();
}
class
public static float[] freq() {
char[] let = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
float [] freq = new float[26];
int a, b;
char[] char1 = str1.toUpperCase().toCharArray();
for (b = 0; b < str1.length(); b++)
{
for (a = 0; a < 26; a++)
{
if (let[a] == char1[b])
{
freq[a]++;
}
}
}
for (int f = 0; f < 26; f++)
{
freq[f] = freq[f] / strCount;
}
return freq;
}
所以在 //Change
的线上,我想使用与
类似的东西
for (int i = 0; i < 26; i++)
{
System.out.printf("%6.2f", Bloor_S.freq[i]);
System.out.printf("%3c", '|');
System.out.println();
}
这样我就可以一次打印出数组中的 1 个数字。
您的总体思路似乎不错,但您应该只调用 Bloor_S.freq()
一次并将结果保存到变量中。然后使用该变量。它看起来像这样:
float[] freq = Bloor_S.freq();
for (int i = 0; i < 26; i++)
{
System.out.printf("%6.2f", freq[i]);
System.out.printf("%3c", '|');
System.out.println();
}
请注意,使用这么多静态函数不太 Java 。面向对象的方法是创建 Bloor_S
的实例并在其上调用(然后是非静态)函数。然后,函数可以将它们将要处理的 String
作为参数,或者您可以将单个 String
作为构造函数参数。
float[] freq = Bloor_S.freq();
for (int i = 0; i < 26; i++)
{
System.out.printf("%6.2f", freq[i]);
System.out.printf("%3c", '|');
System.out.println();
}
按照我想要的方式工作。谢谢
我正在尝试 return 一个浮点数组到我的主 class 以便我可以打印和比较该数组。
传递给 class 的'str' 由全局字符串声明,取自我的主 class
上的用户输入主要
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String input = null;
System.out.print("Please enter a sentence or enter quit to end program: ");
input = sc.nextLine();
while(!input.equals("quit"))
{
System.out.println("The number of characters in the string is: " + BloorS.count(input));
System.out.println("The number of Spaces in the string is: " + Bloor_S.sCount(input));
System.out.println("The number of words in the string is: " + Bloor_S.wCount(input));
Bloor_S.print();
Bloor_S.freq(); //Change
System.out.println();
System.out.print("Please enter a sentence or enter quit to end program: ");
input = sc.nextLine();
}
sc.close();
}
class
public static float[] freq() {
char[] let = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
float [] freq = new float[26];
int a, b;
char[] char1 = str1.toUpperCase().toCharArray();
for (b = 0; b < str1.length(); b++)
{
for (a = 0; a < 26; a++)
{
if (let[a] == char1[b])
{
freq[a]++;
}
}
}
for (int f = 0; f < 26; f++)
{
freq[f] = freq[f] / strCount;
}
return freq;
}
所以在 //Change
的线上,我想使用与
for (int i = 0; i < 26; i++)
{
System.out.printf("%6.2f", Bloor_S.freq[i]);
System.out.printf("%3c", '|');
System.out.println();
}
这样我就可以一次打印出数组中的 1 个数字。
您的总体思路似乎不错,但您应该只调用 Bloor_S.freq()
一次并将结果保存到变量中。然后使用该变量。它看起来像这样:
float[] freq = Bloor_S.freq();
for (int i = 0; i < 26; i++)
{
System.out.printf("%6.2f", freq[i]);
System.out.printf("%3c", '|');
System.out.println();
}
请注意,使用这么多静态函数不太 Java 。面向对象的方法是创建 Bloor_S
的实例并在其上调用(然后是非静态)函数。然后,函数可以将它们将要处理的 String
作为参数,或者您可以将单个 String
作为构造函数参数。
float[] freq = Bloor_S.freq();
for (int i = 0; i < 26; i++)
{
System.out.printf("%6.2f", freq[i]);
System.out.printf("%3c", '|');
System.out.println();
}
按照我想要的方式工作。谢谢