import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Histogram
{
public static void main(String[] args) throws FileNotFoundException
{
Row[] numbers = {
new Row("1 - 10"), new Row("11 - 20"), new Row("21 - 30")
new Row("31 - 40"), new Row("41 - 50"), new Row("51 - 60")
new Row("61 - 70"), new Row("71 - 80"), new Row("81 - 90"),
new Row("91 - 100")
};
for(Row number : numbers)
System.out.print(number);
Counter section = new Counter();
section.StarCounter();
}
它打印出如下内容:
1 - 10|
11 - 20|
21 - 30|
*****************
*********
***
ect.
我希望它打印出类似的内容:
1 - 10|*****************
11 - 20|*********
21 - 30|***
ect.
提前感谢您的任何指点,我可能只是忽略了显而易见的事情。
计数器类别:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Counter
{
public void StarCounter() throws FileNotFoundException
{
File file = new File("alotofnumbers.txt");
Scanner scan = new Scanner(file);
int[] integers = new int[1000];
int start = 0;
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
int count5 = 0;
int count6 = 0;
int count7 = 0;
int count8 = 0;
int count9 = 0;
int count10 = 0;
while (scan.hasNextInt())
{
integers[start++] = scan.nextInt();
}
for (int input : integers)
{
if(input <= 10)
{
count1++;
}
else if(input > 10 && input <= 20)
{
count2++;
}
else if(input > 20 && input <= 30)
{
count3++;
}
else if (input > 30 && input <= 40)
{
count4++;
}
else if (input > 40 && input <= 50)
{
count5++;
}
else if (input > 50 && input <= 60)
{
count6++;
}
else if (input > 60 && input <= 70)
{
count7++;
}
else if (input > 70 && input <= 80)
{
count8++;
}
else if (input > 80 && input <= 90)
{
count9++;
}
else if (input > 90 && input <= 100)
{
count10++;
}
}
double counted1 = count1 / 2.7;
double counted2 = count2 / 2.7;
double counted3 = count3 / 2.7;
double counted4 = count4 / 2.7;
double counted5 = count5 / 2.7;
double counted6 = count6 / 2.7;
double counted7 = count7 / 2.7;
double counted8 = count8 / 2.7;
double counted9 = count9 / 2.7;
double counted10 = count10 / 2.7;
for(int star = 0; star <= counted1 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted2 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted3 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted4 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted5 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted6 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted7 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted8 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted9 ; star++)
{
System.out.print("*");
}
System.out.println();
for(int star = 0; star <= counted10 ; star++)
{
System.out.print("*");
}
System.out.println();
}
}
显然我的帖子有太多代码,而且我真的没有更多信息可以提供,所以它希望我随机输入一些内容。 公开课 排 { 私有(private)字符串行;
public Row(String colums)
{
rows = colums ;
}
public String toString()
{
Counter section = new Counter();
return rows + "|" + "\n";
}
public void setRow(String colums)
{
rows = colums;
}
public String getRow()
{
return rows;
}
}
最佳答案
这是您问题的解决方案。问题在于您首先打印所有 Row
数据,然后打印所有 Integer
数据。您需要同时打印它们。不是一个接一个。另外仅供引用,大约有一百万种不同的方法可以使您的初始代码变得更好。我会试着坐下来想一个更好的方法来做到这一点,这样你就可以学习(在你交作业之后,这样你就不会着急,我们都可以提供帮助。不过,这是一个好的开始。)
首先,我删除了 Row
数据的打印,并向您的 Counter
类添加了一个构造函数以获取 Row
数据。
Row[] numbers = {
new Row("1 - 10"), new Row("11 - 20"), new Row("21 - 30"),
new Row("31 - 40"), new Row("41 - 50"), new Row("51 - 60"),
new Row("61 - 70"), new Row("71 - 80"), new Row("81 - 90"),
new Row("91 - 100")
};
Counter section = new Counter(numbers);
section.StarCounter();
新构造函数:
public class Counter
{
Row[] numbers;
public Counter(Row[] numbers) {
this.numbers = numbers;
}
//Rest of your methods
}
然后在打印 Integer
数据时打印 Row
数据。
System.out.print(numbers[0]); //new line
for(int star = 0; star <= counted1 ; star++)
{
System.out.print("*");
}
System.out.println();
System.out.print(numbers[1]); //new line
for(int star = 0; star <= counted2 ; star++)
{
System.out.print("*");
}
//Do the same for the rest
希望这有帮助!
哦,还去掉了 Row
类中的换行符。
public String toString()
{
return rows + "|";
}
关于java - 如何在同一行打印数组和直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877655/