提出的另一个问题。 我正在从事一项任务,以创建洗衣机功能和所有麻风机,我已经陷入一个小问题。
Line 35:21, 原文为rrpos += prearrpo & __,
在我头部工作时...... 试图做到的是从<代码>HashTable(<>/code>方法>上进入arr.length
。 我先读一下,有人建议,必须从表面上 cr起大小物体;然而,我认为,这似乎过于复杂。
是否有另一种方法,即能够使用哈希特方法中的变量,但在插入方法中?
Another not so important question involves the giant block of if()
statements in the letter(char c
) class; im certain there must be a shorter way of doing this... I would have initially used the ascii values; but the specifications were quite particular about using the values 1-26 for lower/upper case letters-
成就
import java.io.*;
public class HashTable {
public HashTable() {
//Create an array of size 101
String arr[] = new String[101];
//System.out.println("Size1: ");
}
public HashTable(int tsize) {
int size = 2 * tsize;
//System.out.println("Size: " + size);
boolean isPrime = checkPrime(size);
//System.out.println("IsPrime: " + isPrime);
while (isPrime == false) {
//System.out.println("Size: " + size);
size++;
isPrime = checkPrime(size);
}
//System.out.println("Size: " + size);
String arr[] = new String[size];
}
public boolean insert(String line) {
String str = line;
char[] ch = str.toCharArray();
int slen = str.length();
int arrpos = 0;
int hash = slen;
for (int i = 0; i < slen; i++) {
double prearrpo = letter(ch[i]) * Math.pow(32, (hash - 1));
arrpos += prearrpo % arr.length();
hash--;
}
System.out.println(arrpos);
System.out.println("array size:");
System.out.println();
return false;
}
private int letter(char c) {
char ch = c;
if (ch == A || ch == a ) {
return 1;
}
if (ch == B || ch == b ) {
return 2;
}
if (ch == C || ch == c ) {
return 3;
}
if (ch == D || ch == d ) {
return 4;
}
if (ch == E || ch == e ) {
return 5;
}
if (ch == F || ch == f ) {
return 6;
}
if (ch == G || ch == g ) {
return 7;
}
if (ch == H || ch == h ) {
return 8;
}
if (ch == I || ch == i ) {
return 9;
}
if (ch == J || ch == j ) {
return 10;
}
if (ch == K || ch == k ) {
return 11;
}
if (ch == L || ch == l ) {
return 12;
}
if (ch == M || ch == m ) {
return 13;
}
if (ch == N || ch == n ) {
return 14;
}
if (ch == O || ch == o ) {
return 15;
}
if (ch == P || ch == p ) {
return 16;
}
if (ch == Q || ch == q ) {
return 17;
}
if (ch == R || ch == r ) {
return 18;
}
if (ch == S || ch == s ) {
return 19;
}
if (ch == T || ch == t ) {
return 20;
}
if (ch == U || ch == u ) {
return 21;
}
if (ch == V || ch == v ) {
return 22;
}
if (ch == W || ch == w ) {
return 23;
}
if (ch == X || ch == x ) {
return 24;
}
if (ch == Y || ch == y ) {
return 25;
}
if (ch == Z || ch == z ) {
return 26;
}
return 0;
}
public boolean lookUp(String string) {
//
return false;
}
public String getNum() {
//
return null;
}
public int length() {
return 0;
}
private static boolean checkPrime(int size) {
if (size % 2 == 0) {
return false;
}
double c = Math.sqrt(size);
for (int i = 3; i < c; i += 2) {
if (size % i == 0) {
return false;
}
}
return true;
}
}